Pense-bête
Cette page regroupes des trucs dont je me sers régulièrement mais dont je suis incapable de me souvenir lors que j'en ai besoin
Contents
1. Debug en python
1.1. Mise en place
- Utiliser le module pdb en ajoutant les
import pdb
pdb.set_trace()
1.2. Quelques commandes disponibles dans la console
args : affiche les arguments de la fonction en cours.
continue : reprend l'execution jusqu'au prochain point d'arrêt(breakpoint).
list [m], [n] : affiche les 11 lignes de code. Si m et/ou n sont passés, affiches les lignes m à n.
next : continue l'execution jusqu'au prochain return ou la fin de la fonction en cours.
p expression : évalue l'expression dans le conexte actuel d'execution.
pp expression : comme p, mais l'affichage se fait avec pretty print
quit : quitte le debugger.
return : continue l'execution jusqu'à prochain retrun.
step : execute la prochaine instruction et s'arrête dés que possible.
where : indique la ligne actuel du programme.
2. Cyrus
3. OpenSSL
3.1. Validation
Validatation du contenu d'un CSR: openssl req -text -noout -verify -in csrFile.csr
Validatation du contenu d'une clé privée: openssl rsa -check -in privateKey.key
Validatation du contenu d'un crt: openssl x509 -in certificate.crt -text -noout
Validatation du contenu d'un PKCS: openssl pkcs12 -info -in pkcsFile.p12
3.2. Conversion
Conversion d'un fichier de type DER en PEM: openssl x509 -inform der -in fichier.cer -out fichier.pem
Conversion d'un fichier de type PEM en DER: openssl x509 -outform der -in fichier.pem -out fichier.der
Conversion d'un fichier de type PKCS12 en PEM: openssl pkcs12 -in fichier.pkcs -out fichier.pem -nodes
Il est possible d'utiliser les options -nocerts ou -nokeys pour récupérer uniquement la clé privée ou les certificats respectivement.
Conversion d'un fichier de type PEM en PKCS12: openssl pkcs12 -export -out certificate.pkcs -inkey cleprive.txt -in certificat.crt -certfile CACert.crt
4. Java
4.1. Utilisation de IPV4 uniquement
Utiliser l'option -Djava.net.preferIPv4Stack=true lors de l'appel de l'executable de java!
4.2. Gestion des certificats sous JAVA
- Afficher les infos de la clé contenu dans un fichier au format PKCS12
keytool -list -storetype pkcs12 -keystore /tmp/toto.p12
- Affichera les infos de la clé et notamment l'ID de la clé
- Signer une applet avec un certificat au format PKCS12
jarsigner : jarsigner -storetype pkcs12 -keystore /tmp/toto.p12 applet.jar "ID de la Clé"
- Vérfier la signature d'une applet
jarsigner -verbose -verify -certs applet.jar
- Import d'un fichier PKCS12 dans un Keystore:
keytool -importkeystore -destkeystore KEY_STORE_FILE -srckeystore CERT.p12 -srcstoretype pkcs12 -alias Alias
- Lister le contenu d'un Keystore:
keytool -list -keystore KEY_STORE_FILE
- Ajout certificat auto signé dans le keystore par défaut:
keytool -keystore $JAVA_HOME/jre/lib/security/cacerts -import -file certificate.cer
Le mot de passe du keystore est changeit
5. Tomcat
5.1. Redéfinition de l'emplacement du keystore
Par défaut tomcat utilise le fichier cacerts. Il est possible de le redéfinir (pour des raisons de séurité, pour des raisons pratiques: utilisation d'un mot de passe différant, persistance des certificats auto-signés lors des mises à jours). Pour cela, il faut éditer le fichier /etc/default/tomcat55, ajouter:
-Djavax.net.ssl.keyStore=/path/to/keystore -Djavax.net.ssl.trustStore=/path/to/keystore : définit un nouveau keystore
-Djavax.net.ssl.keyStorePassword=motdepassedelamort: le password du keystore.
dans le fichier /etc/default/tomcat55 et relancer tomcat.
5.2. Forcer les servelets à utiliser un proxy
- Dans un environnement sécurisé, les applications en sont pas autorisées à accèder à internet sans passer par un proxy et c'est une contrainte forte dans environnement où il exite plusieurs DMZ. Dans le cas de servlets, qui utilisent des services Web, il est possible de définir un proxy global et forcer tous les servelts à utiliser ce proxy. Pour cela, il faut ajouter:
-Dhttp.proxyHost=urlduproxy_http : définition du serveur proxy pour le http.
-Dhttp.proxyPort=portduproxy_https : définition du port du serveur proxy pour le http.
-Dhttps.proxyHost=urlduproxy_https : définition du serveur proxy pour le https.
-Dhttps.proxyPort=portduproxy_https : définition du port du serveur proxy pour le https.
-Dhttp.nonProxyHosts=Host1|127.0.0.1 : indique les machines pour lesquelles le proxy ne doit pas être utilisé. Les machines doivent être séparées par des |
-Djava.net.useSystemProxies=true : force l'utilisation du proxy système.
dans le fichier /etc/default/tomcat55 et relancer tomcat.Dans le cas d'un autre serveur d'applications (WebLogic, par exemple), ces paramètres peuvent être ajoutées dans les options JAVA (La variable JAVA_OPTIONS).
5.3. Utilisation de IPv4 uniquement même si IPv6 est disponible
Toujours dans le même fichier /etc/default/tomcat55, ajouter l'option -Djava.net.preferIPv4Stack=true
6. Essbase Administration Services
Correction d'erreur MAX/L Api can't be load : éditer le fichier /hyprndata/hyperion/eas/server/bin/starEAS vérifier la ligne contenant export ESSLANG. La valeur doit être French_France.Latin1@Default. Dans l'installation par défaut, il manque t à la fin. Il faut, donc, rajouter le t à la fin !
7. Perl
7.1. One liner
- perl -p -i -e 'expression' : équivalente sed. Plusiers expressions peuvent être séparées par des ';'
- -e: perl expression !
- -p: print !
- -i: in-place; équivalent de sed -i
- -n : équivalent de sed -n
- -M: utilise un module ; equivalent de use
Ex 1: (sed)
echo "++++++oduq sdqsd qsdqs ACBCD----------" | perl -i -p -e 's/^\+*//g; s/\-*$//g ; s/(^.)(.*)/\u$1\L$2/'
Résultat: Oduq sdqsd qsdqs acbcd
Ex 2: Encodage et décodage Base64
echo coucou | perl -MMIME::Base64 -ne 'print encode_base64($_)' echo "Y291Y291Cg==" | perl -MMIME::Base64 -ne 'print decode_base64($_)'
7.2. Manipulation de date
- Il faut utiliser le module Date::Manip
Quelques exemples en bash :
- Nombre jours écoulés entre le dernier samedi et aujourd'hui:
expr $(perl -MDate::Manip -e 'print UnixDate(ParseDate("today"), "%e\n");') - $(perl -MDate::Manip -e 'print UnixDate(ParseDate("last saturday"), "%e\n");')- Nombre jours écoulés entre le premier le premier mars 2008 et de l'année en cours et aujourd'hui:
expr $(perl -MDate::Manip -e 'print UnixDate(ParseDate("today"), "%j\n");') - $(perl -MDate::Manip -e 'print UnixDate(ParseDate("03/01"), "%j\n")')- La date du prochain vendredi:
perl -MDate::Manip -e 'print UnixDate(ParseDate("next friday"), "%d/%m/%Y\n")'- A quel jour correspond le 25/02/2008:
perl -MDate::Manip -e 'print UnixDate(ParseDate("02/25/2008"), "%A\n")'- A quel jour en français correspond le 25/02/2008:
perl -MDate::Manip -e 'Date_Init("Language=French"); print UnixDate(ParseDate("02/25/2008"), "%A\n")'* A quel jour en français correspond le 25/02/2008 en utilisant le format de date français (J/M/A)
perl -MDate::Manip -e 'Date_Init("Language=French", "DateFormat=non-US") ;print UnixDate(ParseDate("25/02/2008"), "%A\n")'Pour l'aide sur le module perl s'obtient en tapant perldoc Date::Manip
8. Shell UNIX
8.1. Find
- Trouver le dernier fichier modifié dans une arborescence:
find DIR -type f -printf "%T@|%p\n" | sort -n | tail -n 1 | awk -F\| '{print $2}'- Lister tous les fichier avec leur date de modification (du plus ancien au plus récent):
find DIR -type f -printf "%T@|%t|%p\n" | sort -n | awk -F\| '{print $2 " " $3}'- Le fichier le plus gros dans une arborescence:
find . -type f -printf "%s|%p\n" | sort -n | tail -n 1 | awk -F\| '{print $2}'- Les fichiers et répertoires avec le time stamp unix(t), nom du fichier complet(p), time stamp locale(t), uid(u), gid(g), taille(s) et le type(y)
find DIR -printf "%T@|%p|%t|%u|%g|%s|%y\n"
8.2. Renommage de fichiers
Source |
Destination |
Commande |
Commentaires |
01 File name.ext |
01 - File name.ext |
rename -v 's/(^\d+)(.*)\.ext/$1 - $2.ext/g' * |
Ajoute d'un '-' après le numéro d'ordre |
01 file Name.ext |
01 - File name.ext |
rename -v 's/(^\d+) (.)(.*)\.ext/$1 - \u$2\L$3.ext/g' * |
Ajoute d'un '-' après le numéro d'ordre et passe le premier caractère du nom du fichier en majuscule. |
8.3. Conversion de fichiers .flv vers .avi
ffmpg: ffmpeg -i file.flv file.avi
mencoder: mencoder -oac mp3lame -ovc lavc -o file.avi file.flv
8.4. Vérification du bon fonctionnement de postgrey
- Créer un petit script shell contenant
cat | nc -q 1 127.0.0.1 60000 << GEN_GLIST_REQ
request=smtpd_access_policy
protocol_state=RCPT
protocol_name=SMTP
client_address=10.0.0.1
client_name=unknown
helo_name=
sender=$RANDOM@$RANDOM.$RANDOM
recipient=$RANDOM@$RANDOM.$RANDOM
queue_id=
instance=$RANDOM.48a97e09.$RANDOM
size=0
GEN_GLIST_REQ
et lancer excuter le script. Si le démon greylist est actif, le message action=DEFER_IF_PERMIT Greylisted for XXX seconds sera affiché!
Pour le bon fonctionnement su script, il faut disposer de l'outil netcat(nc). Il faut également modifier le port et l'ip utilisé par postgrey (qui sont ici 6000 et localhost).
9. Solaris
Lister les interfaces réseaux: dladm show-dev
10. Windows
10.1. Administration du domaine AD à partir d'une machine Linux
Une notice entière est consacrée à cette section. Voir la notice AdministrationWindowsApartirDeLinux
11. Divers
11.1. initramfs
Mise à jour: update-initramfs -k KERNEL_VERSION -u
11.2. eGroupware
- Suppression de séparateur entre le nom et prénom sous eGroupware:
- Editer le fichier phpgwapi/inc/class.common.inc.php
Chercher $delimiter = ', ' et supprimer le ,
Index CategoryMiscs CategoryLinux CategoryUnix CategoryMsWindows