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




Sous Linux, comment modifier un fichier dans un zip sans le décompresser ?

Comment modifier un zip sans le décompresser sous Linux

Se mettre dans le bon répertoire et mettre le chemin du fichier du zip qu’on souhaite modifier

cd /Vers/le/repertoire/contenant/monFichier

zip -r /chemin/Du/Zip.zip  /cheminDeMonFichier/Dans/le/Fichier/Zip

Comment vérifier le contenu du zip sans le décompresser

unzip -l /chemin/Du/Zip.zip | grep "monFichier"

=> On vérifie la date de mise à jour

Comment supprimer un fichier dans un zip sans le décompresser

zip -d /chemin/Du/Zip.zip "/cheminDeMonFichier/Dans/le/Fichier/Zip"

 

Sources : 

Récupérer un paramètre oracle sur plusieurs serveurs en ksh sous Linux

En mode sysadmin

Etant dans une équipe d’intégration, j’ai besoin de lancer souvent de petits scripts maison, telle une sysadmin. Je ne fais pas de dev à proprement parler, j’ai juste besoin d’un résultat rapide et efficace. Mon script n’a pas besoin d’être générique ou d’avoir un max de contrôles, c’est du « ONE SHOT » en quelque sorte.

Comment je procède ?

Dans un premier temps, comme tout sysadmin, je teste d’abord le script sql en local sur les machines.

Dans un second temps, je lance le script à distance toujours en ligne de commande.

Enfin, je crée un script ksh de quelques lignes qui contiendra tout ce dont j’ai besoin : liste des serveurs, script SQL, résultat affiché sur la console.

Je vous laisse découvrir le script ci-dessous, testé et approuvé sur des bases Oracle 11g :)

#!/usr/bin/ksh

for i in server1 server2 server3 server4 server5
do
ssh -T $i <<EOF
echo $i
#amélioration de l'affichage, 200 caractères par ligne
echo "set linesize 200 " > /tmp/scriptOracle.sql
echo "show parameter parallel_max_servers" >> /tmp/scriptOracle.sql
#se déconnecter de la base
echo "exit" >> /tmp/scriptOracle.sql
#sourcer le ficher d'environnement Oracle, lancer le  script sql créé juste en haut et récupérer uniquement la ligne qui nous intéresse
        su - oracle -c ". /chemin/fichierParamOracle  ; sqlplus / as sysdba @/tmp/scriptOracle.sql" 2>/dev/null | grep parallel_max_servers
EOF
done

Résultat : 
monPrompt> ./scriptOracle.ksh
server1
parallel_max_servers                 integer                          xxx
server2
parallel_max_servers                 integer                          xxx
server3
parallel_max_servers                 integer                          xxx
server4
parallel_max_servers                 integer                          xxx
server5
parallel_max_servers                 integer                          xxx
Petit script de sysadmin