Mon top 10 selon Google Analytics

Selon Google Analytics, mon top 10 est très technique, on y retrouve du linux, du python, et de l’oracle. Voyez par vous-même :

Ce que je peux dire c’est que le 1er article est très bien référencé par Google. En effet lorsqu’on tape « ping linux » mon article ressort à la première position sur Google France !

Concernant mes autres best-sellers il s’agit d’articles dédiés à la programmation python, au scripting shell ou encore aux bases de données Oracle.




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 modifier la rétention des logs des JVMs sous Websphere en utilisant python ?

Premièrement, je lance une recherche sur Google avec les mots clés suivants :

change log file rotation and maximum file size jvm logs websphere

Je vois que cela ne suffit pas car je tombe sur les méthodes manuelles et non les scripts python. Du coup j’enrichis ma recherche :

Setting log file size and rotation for JVM log files websphere jython wsadmin

Super ! Je tombe sur un article qui a l’air de répondre à ma problématique.

# rotateWasLogEPRN.py
# Setup WAS Log file rotations
# for yourserver
#
# Implement:
# ./wsadmin.sh -lang jython -f $FILE_LOCATION/rotateWasLogEPRN.py >> $TO_LOG_FILE
#
# You can add this as you have other scripts in the deployment script
# if you need help please let me know.
#
#

print "Changing the SystemOut & SystemErr log file rotation settings"
var1 = AdminConfig.getid('/Cell:yourcell/Node:yournode/Server:yourserver/')

log = AdminConfig.showAttribute(var1, 'outputStreamRedirect')
log2 = AdminConfig.showAttribute(var1, 'errorStreamRedirect')

AdminConfig.modify(log, '[[rolloverSize 10] [maxNumberOfBackupFiles 5]]')
AdminConfig.modify(log2,'[[rolloverSize 10] [maxNumberOfBackupFiles 5]]')

AdminConfig.save()

print "New SystemOut settings 9-10-08"
AdminConfig.show(log).split("\n")
print "New SystemErr settings 9-10-08"
AdminConfig.show(log2).split("\n")

Je vais l’adapter à mes besoins, car j’ai besoin d’une rotation tous les 5MB et je dois garder 20 fichiers de logs. Cela donne donc :

# rotateWasLogEPRN.py
# Setup WAS Log file rotations
# for yourserver
#
# Implement:
# ./wsadmin.sh -lang jython -f $FILE_LOCATION/rotateWasLogEPRN.py >> $TO_LOG_FILE
#
# You can add this as you have other scripts in the deployment script
# if you need help please let me know.
#
#

print "Changing the SystemOut & SystemErr log file rotation settings"
var1 = AdminConfig.getid('/Cell:yourcell/Node:yournode/Server:yourserver/')

log = AdminConfig.showAttribute(var1, 'outputStreamRedirect')
log2 = AdminConfig.showAttribute(var1, 'errorStreamRedirect')

AdminConfig.modify(log, '[[rolloverSize 5] [maxNumberOfBackupFiles 20]]')
AdminConfig.modify(log2,'[[rolloverSize 5] [maxNumberOfBackupFiles 20]]')

AdminConfig.save()

print "New SystemOut settings 6-12-17"
AdminConfig.show(log).split("\n")
print "New SystemErr settings 6-12-17"
AdminConfig.show(log2).split("\n")

De plus je dois lancer ce script sur 48 JVMs. Il faut donc que je trouve un moyen de faire une boucle en python ou d’encapsuler ça dans du shell, ou encore de créer des fonctions en python. Je vais utiliser la dernière méthode, les fonctions en python. J’ai déjà vu un de mes collègues le faire, cela ne devrait pas être très compliqué.

def rotateWasLog(nodename,servername):
 server_id = getServerByNodeAndName(nodename,servername)
 log = AdminConfig.showAttribute(server_id, 'outputStreamRedirect')
 log2 = AdminConfig.showAttribute(server_id, 'errorStreamRedirect')
 AdminConfig.modify(log, '[[rolloverSize 5] [maxNumberOfBackupFiles 20]]')
 AdminConfig.modify(log2,'[[rolloverSize 5] [maxNumberOfBackupFiles 20]]')

# appel fonction
rotateWasLog('monPremierNode','SERVER01')
rotateWasLog('monPremierNode','SERVER02')

print "New SystemOut settings 6-12-17"
AdminConfig.show(log).split("\n")
print "New SystemErr settings 6-12-17"
AdminConfig.show(log2).split("\n")

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

Mon script ne fonctionne pas du premier coup, comme d’habitude avec python j’ai des erreurs incompréhensibles :

Traceback (innermost last):
 File "<string>", line 9, in ?
 File "<string>", line 2, in rotateWasLog
NameError: getServerByNodeAndName

Ce que je sais c’est que c’est l’appel à la fonction qui est erroné.

C’est bon, j’ai trouvé, j’avais oublié d’inclure la librairie wsadminlib.py. Donc cela a fonctionné comme prévu. Ci-dessous mon code :

execfile('/xxxx/wsadminlib.py')

def rotateWasLog(nodename,servername):
 server_id = getServerByNodeAndName(nodename,servername)
 log = AdminConfig.showAttribute(server_id, 'outputStreamRedirect')
 log2 = AdminConfig.showAttribute(server_id, 'errorStreamRedirect')
 AdminConfig.modify(log, '[[rolloverSize 5] [maxNumberOfBackupFiles 20]]')
 AdminConfig.modify(log2,'[[rolloverSize 5] [maxNumberOfBackupFiles 20]]')

# appel fonction
rotateWasLog("xxx","xxx")
rotateWasLog("xxx","xxx")

#print "New SystemOut settings 6-12-17"
#AdminConfig.show(log).split("\n")
#print "New SystemErr settings 6-12-17"
#AdminConfig.show(log2).split("\n")

AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

Il ne me reste plus qu’à appeler la même fonction pour toutes mes JVMs.

Source :

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