Comment tester une connexion URL avec curl sous Linux ?

Pour tester une connexion, il faut d’abord générer un cookie via une première requête curl puis utiliser ce même cookie pour accéder aux pages de votre site. Voilà le principe :

Première requête : génération de cookie avec curl

curl "http://monURL/monFormulaire" -c  fichierCookie --data "param1=valeur1&param2=valeur2" 
Version simplifiée de la requête curl de génération de cookie

Deuxième requête : utilisation du cookie pour appeler une URL

curl -b fichierCookie URL

Ci-dessous on a un exemple concret, j’ai effectué un test de connexion de la page de login wordpress. Vous remarquerez que j’ai ajouté un certain nombre de paramètres avec l’option -H, ce sont des entêtes HTTP, elles sont indispensables. Notamment celle qui indique le user agent, à savoir la simulation du test de connexion via un navigateur web.

curl -c cookie.txt 'http://www.leblogdefatiha.com/wp-login.php' -H 'Origin: http://www.leblogdefatiha.com' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: max-age=0' -H 'Proxy-Connection: keep-alive' --data 'log=xxxxxx&pwd=xxxxxxx&wp-submit=Se+connecter&redirect_to=http%3A%2F%2Fwww.leblogdefatiha.com%2Fwp-admin%2F&testcookie=1' --compressed



curl -b cookie.txt "http://www.leblogdefatiha.com/wp-admin/users.php" -H 'Origin: http://www.leblogdefatiha.com' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: max-age=0' -H 'Proxy-Connection: keep-alive' --compressed
Test avec la page de connexion wordpress

 

Vous pouvez ainsi entrevoir toutes les possibilités qui vous sont offertes. Vous pouvez scripter ces tests et ainsi savoir si vos sites sont dispos et si l’authentification fonctionne.


Je me permets une petite diversion, vous trouverez ci-dessous un exemple concret de requête curl récupérée en me connectant sur twitter :

Sous Chrome, c’est simple de récupérer une requête curl, il vous suffit de suivre la procédure ci-dessous :

Vous vous connectez à votre compte twitter puis vous faîtes un clic droit sur la page « Inspecter ». Vous choisissez l’onglet Network, puis vous faîtes un clic droit sur le lien sessions et vous sélectionnez Copy puis « Copy as cURL (bash) » .




Comment supprimer toutes les sessions screen sous Linux ?

Testé et approuvé, en une ligne de commande vous serez capable de supprimer toutes les sessions screen sous Linux. Ceci se fera par l’intermédiaire d’une boucle for en shell. A l’intérieur de cette boucle for, vous listerez toutes les sessions avec la commande :

screen -ls

Une fois toutes les sessions listées vous récupérerez le mot-clé « Detached ». En effet, nous ne supprimerons que les sessions « détachées », ce sera en effet plus sympa pour les utilisateurs déjà connectés en mode screen.

Enfin, grâce à la commande awk on isolera uniquement la partie contenant l’identifiant de session.

Tout d’abord, vous trouverez ci-dessous un exemple :

server1:~ # screen -ls
 There are screens on:
 36130.pts-0.server1 (Detached)
 59510.pts-18.server1 (Detached)
 5700.pts-3.server1 (Detached)
 26285.pts-5.server1 (Detached)
 16726.pts-22.server1 (Detached)
 49048.pts-12.server1 (Detached)
 59782.pts-4.server1 (Detached)
 26695.pts-10.server1 (Detached)
 47762.pts-18.server1 (Detached)
 15672.pts-23.server1 (Detached)
 42181.pts-18.server1 (Detached)
 51100.pts-6.server1 (Detached)
 54468.pts-16.server1 (Detached)
 24588.pts-3.server1 (Detached)
 33985.pts-1.server1 (Detached)
 15 Sockets in /var/run/screens/S-root.

Et voilà la fameuse commande :

for i in `screen -ls | grep Detached | awk '{ print $1 }' `; do screen -S $i -X quit ; done

Source :

Stackoverflow




Gagnez du temps avec explainshell, vos lignes de commandes shell décortiquées

Hier, j’ai lu sur twitter :

Je suis allée voir sur le site explainshell et j’ai été agréablement surprise. En effet, si vous tapez une ligne de commande, le site vous renvoie une explication détaillée de la commande ainsi que des options utilisées. De plus, si vous utilisez une succession de commandes séparées par des « pipes », le site le comprend aussi.

Passons à la démo :

exemple 1 commande shell

Un autre exemple (décomposé en 2 sous-commandes pour plus de lisibilité) :

exemple 2a commande shell

exemple 2b commande shell

 

Comment splitter un fichier volumineux en plusieurs sous-fichiers sous Linux ?

Parfois, nous avons besoin d’analyser le contenu de fichiers volumineux sous Linux. Nous utilisons alors des commandes shell telles que awk, grep, cut, … Le problème c’est que cela prend énormément de temps et énormément de ressources. Du coup il est préférable des fois de découper un fichier volumineux en plusieurs sous-fichiers d’une taille précise afin de l’analyser plus rapidement et plus facilement.

Voici la commande :

split -b100m -d monFichier partie

Cela donnera N fichiers de 100Mo chacun avec comme nom : partie1…..partieN.

En savoir plus sur la commande split.

Comment utiliser une variable shell dans awk ?

Merci Google encore une fois ! Je cherche depuis une bonne demi-heure comment faire pour afficher une variable shell dans awk et je tombe sur un forum ubuntu qui me donne la réponse. Je suis trop contente !

Il suffit d’utiliser l’option -v et de passer en paramètre la valeur de la variable shell que l’on souhaite utiliser.

Cf. un exemple ci-dessous :

Je parse un fichier et j’affiche la ligne qui m’intéresse ainsi que la variable shell que j’aurai créée au préalable. C’est très utile quand on manipule plusieurs fichiers et qu’on veut afficher une colonne du fichier d’origine et une colonne du fichier destination et ce en une ligne.

awk -v VAR= »$myShellVariable » ‘/^MY_PATTERN/ { print $1 « ; » VAR }’ $myFile

Source : forum Ubuntu