Publié
Commentaires Aucun

L’astuce du jour II

Parce que l’article l’astuce semble devenir un inventaire à la Prévert, j’ai choisi de répartir les trucs et astuces sur plusieurs articles
Voici donc une nouvelle liste d’astuces

Cet article s’étoffera au fur et à mesure du temps sans ordre particulier

noeud.jpg

Astuces :



trier les répertoires par taille sous Linux dans un terminal




du --max-depth=1 . | sort -n -r

Affiche la liste des répertoires triés par taille pour le répertoire courant “.”

  • Exemple
du --max-depth=1 /opt/ | sort -n -r
152641004       /opt/
75018316        /opt/scripts
62826440        /opt/tmp
14625068        /opt/www
171176  /opt/lad

  • Avec l’option -h pour un affichage en mode humain (K, M, G, etc.)

 du -h --max-depth=1 /opt/ | sort -h -r
146G    /opt/
72G     /opt/scripts
60G     /opt/tmp
14G     /opt/www
168M    /opt/lad

  • Pour avoir le total

du -sh (répertoire)



Monter une image iso




  • Par exemple pour monter l’image de systemrescuecd-x86-x.y.z.iso qui est un fichier iso présent sur un disque
mkdir -p /tmp/cdrom
mount -o loop,exec /path/to/systemrescuecd-x86-x.y.z.iso /tmp/cdrom



Tester la vitesse de sa connexion en ligne de commande




Télécharger le programme python

wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py 

puis lancer à l’aide de python

python speedtest_cli.py
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from XXX (111.27.17.134)...
Selecting best server based on latency...
Hosted by Ftth Internet (Paris, FR) [1.26 km]: 2.44 ms
Testing download speed........................................
Download: 100.19 Mbit/s
Testing upload speed..................................................
Upload: 95.38 Mbit/s



Envoi email avec sendmail et pièce attachée




pour envoyer un email avec un fichier joint en ligne de commande

ATTFILE=/opt/statistique/mois/janvier.xlsx
ATTNAME=janvier.xlsx
MAILTO=martin.durand@sonmail.com
MAILFROM=fabrice.lechat@monmail.com

( cat <<HERE; uuencode "${ATTFILE}" "${ATTNAME}" ) | sendmail -oi -t
From: ${MAILFROM}
To: ${MAILTO}
Subject: attached $ATTNAME

HERE 



Supprimer une clé d’un hôte distant ssh




Exemple pour supprimer la clé de l’hôte 192.168.1.20 dont la clé ssh à changé :

ssh-keygen -f "/home/toto/.ssh/known-hosts" -R 192.168.1.20 



Bloquer/autoriser la connexion ssh par utilisateur




Editer et modifier le fichier /etc/security/access.conf

Par exemple pour autoriser oracle depuis l’adresse 192.168.1.115 sur les serveurs

+ : oracle : 192.168.1.115
#
# All other users should be denied to get access from all sources.
#- : ALL : ALL
-:ALL EXCEPT users :ALL



Changer la durée de validité du mot de passe




par exemple mettre à 3650 jours la durée de validité pour le compte oracle

passwd -x 3650 oracle

Auteur

Publié
Commentaires Aucun

L’astuce du jour

Dans ces articles, je déposerai les trucs et astuces que j’utilise et les scripts que je développe pour répondre à des besoins ponctuels

Cet article s’étoffera au fur et à mesure du temps sans ordre particulier

cuisine.jpg

Astuces :



Comment nettoyer une URL




Bien souvent on désire copier une url pour l’utiliser dans un marque page ou dans un autre navigateur et souvent au lieu de diriger directement vers le site qui nous intéresse, l’url va passer par des régies publicitaire ou différents sites
Les caractères comme %3A ne permettent pas non plus d’utiliser le copier coller

Pour tenter de trouver le lien direct on peut traiter l’URL au travers d’un script

Le script:

  • prend une URL encodée et présente dans le presse papier
  • la transforme en caractères ascii
  • extrait la partie utile
  • copie le résultat dans le presse papier

  • On crée le script
nano asc_url.sh 
#! /bin/bash
url=$(xclip -o) 
out_url=$(printf ${url//%/\\x})
echo "$out_url" | awk -F'url=' '{print $NF}' | awk -F"?" '{print $1}' | xclip -selection clipboard

  • On lui donne les droits en exécution

chmod +x asc_url.sh
  • Maintenant il suffit de
    1. copier une URL dans le presse papier
    2. Exécuter le script

L’URL corrigée est maintenant dans le presse papier

par exemple une URL publicitaire comme ça :
http://openad.tf1.fr/RealMedia/ads/click_lx.ads/AUTOMOTO/news/home/L-18/419047701/Top2/TF1_Publicite/29631_E-TF1_-_ARAMIS_AUT_98578@29631_E-TF1_-_ARAMIS_AUT_98578_web/29631_E-TF1_-_ARAMIS_AUT_98578_web_Megabanner.html/6e6b5848444665564a6e414142583849?http://aramis.commander1.com/c3/?tcs=1026&chn=pr&src=automoto&cmp=pr_automoto_HP&med=vnvo&url=http://www.aramisauto.com?track=automoto&cmpid=pr_automoto

sera coupée comme ça :
http://www.aramisauto.com

Autre exemple
la copie d’une adresse dans la barre d’adresse de firefox
L’adresse n’est , en l’état pas interprétable par le navigateur

face.png




Lister les IPs d’un VLAN




Vous avez ajouté un nouveau périphérique sur votre réseau, mais il s’est configuré tout seul et vous ne connaissez pas son adresse.

Une des méthode peut être de lancer un scan réseau

nmap -sP 192.168.1.0/24 | less

Nmap scan report for 192.168.1.100
Host is up (0.0024s latency).
Nmap scan report for rpi2 (192.168.1.110)
Host is up (0.00092s latency).
Nmap scan report for 192.168.1.170
Host is up (0.0020s latency).

192.168.1.0/24 est votre VLAN



renommer les fichiers par lot




Vous avez copié les photos de votre appareil mais l’extension est .JEPG et vous voulez avoir .jpg
pour renommer une série de fichiers, par exemple pour changer l’extension de tous les fichiers d’un répertoire :

find . -name "*.JPEG*" -exec rename -v 's/\.JPEG$/\.jpg/i' {} \;

ATTENTION find recherche dans tous les répertoires et sous répertoires

avant de lancer votre commande faites d’abord un test avec

find . -name "*.JPEG*"

pour voir la liste des fichiers qui seront traités

Faite un man de find pour voir comment trouver les fichiers à modifier. Par exemple, faire une recherche par date de création

La commande find est très riche et permet de choisir des exclusions de fichier des tris par date, etc.
Votre ligne de commande pourra donc etre ultra spécifique et répondre à tous vos besoins



Lister les taches crontab de tous les utilisateurs




On crée un allias que l’on peut placer dans le .bashrc
Pour utiliser un entre le nom de l’alias sur la ligne de commande

  • Pour aix
alias cronall='for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" && crontab -l $user; done'
  • Log des taches CRON
    IBM: AIX – /var/adm/cron/log
  • Pour linux
alias cronall='for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" && crontab -u $user -l; done'



Annuler la déconnexion automatique pour inactivité d’une session SSH




1) La plupart du temps, la déconnexion est faite par le shell. On peut désactiver cette valeur de timeout en effaçant la valeur de TMOUT dans votre profile. TMOUT est le nombre de secondes d’inactivité que le bash attend avant de se terminer.

Echo $TMOUT 

Pour vérifier si il est configuré.

Si oui, ajouter cette commande dans votre profile, ou directement dans la console :

unset TMOUT

2) Configurer PuTTY pour envoyer des signaux de vie dans :

Configuration > Connection > Seconds between keepalives = 60

3) Personnaliser votre sshd_config (qui normalement se trouve dans in /etc/ssh) et ajouter :

TCPKeepAlive yes
 ClientAliveInterval 60

Enregistrez le fichier et redémarrez sshd.



Effacer une partie de l’historique




Imaginons que mal réveillé, vous faites un su -ss et vous n’êtes pas réveillé comme on vient de le dire, alors vous enchainez avec le mot de passe root suivi d’entrée. Là vous regardez votre écran et vous dite m….

Le résultat est que le mot de passe root se trouve dans l’historique. Comme c’est pas super sécurisé, vous souhaitez faire disparaitre la ligne dangereuse :-)

  • Pour effacer une ligne dans l’historique

history -d $((HISTCMD-n))

exemple pour effacer les 2 dernières lignes

history -d $((HISTCMD-2))



Effacer une clé ssh d’un hôte distant




Quelques fois on a besoin de réinstaller une machine sur laquelle on accède habituellement en ssh
par exemple comme pour les RPI avec lesquels on fait beaucoup de tests. Dans ce cas les clés publiques et privées vont changer, ce qui fait que on ne peut plus se connecter en ssh avec une machine qui s’est déjà connectée et qui a donc mémorisé les anciennes clés

la solution est d’effacer ces clés dans le fichier known_hosts, mais il y a toujours un risque de se tromper ou d’abimer ce fichier known_hosts

Ci dessous une manière fiable pour l’effacement

  • Exemple pour supprimer la clé de l’hôte 192.168.100.110 dont la clé ssh à changé :
ssh-keygen -f "/home/joel/.ssh/known-hosts" -R 192.168.100.110 



Rechercher du texte dans une liste de fichiers




Pour rechercher un mot dans une liste de fichiers répondant à une recherche par motif, on va utiliser find

find . -exec grep -q "mon texte" {} \; -print
find /home/joel/ -name \*.txt -exec grep -q "raspberry" {} \; -print

find va rechercher les fichiers dont l’extension est txt à partir du répertoire depuis lequel on lance la commande “/home/joel/” (on peut mettre ici le chemin sur lequel on veut faire la recherche)
Un point fait la recherche à partir du répertoire courant

Ensuite grâce à l’option exec on transmet le résultat vers grep et on affiche le résultat du grep



recherche tous les fichiers sauf…




Find est très pratique pour rechercher des fichiers avec beaucoup d’options pour afiner le résultat.
Par exemple on peut rechercher la liste de tous les fichiers avec l’extension “conf” et dont le nom commence par “monapp” dans le répertoire /etc/ mais seulement ceux dont la date de modification est inférieure à 3heures

Mais comment faire pour exclure des fichiers de la liste des résultats ?
l’option est not -name et permet d’exclure le nom après l’option
Si je veux effacer tous les fichiers jpg sauf ceux dont le nom commence par android, Linux et week, je peux créer un fichier texte qui contient les motif d’exclusion que l’on passera à l’option not -name

nano exclude.txt
android*
Linux*
week*

Et maintenant on utilise find pour afficher la liste et not -name (! -name) pour exclure le nom des fichiers

find /www/data/*graph/* -name "*" $(printf "! -name %s " $(cat exclude.txt))| less

on peut affiner en recherchant par exemple que les fichiers jpg et png

find /www/data/*graph/* -name "*.jpg" -name "*.png" $(printf "! -name %s " $(cat exclude.txt))| less



exécuter une commande sur des fichiers résultats d’une recherche




Vous rechercher une liste de fichiers correspondants à des critères de recherche, et vous voulez ensuite appliquer une commande sur chacun de ces fichiers

Exemples :

  • on recherche tous les fichiers portant l’extension jpg et on veut en faire une copie dans un répertoire, ou sur une clé usb

find /home/joel/ -name \*.jpg | awk '{print "cp " $1 " /opt/mon_répertoire_de_zip"}' | sh
  • on recherche tous les fichiers portant l’extension zip et on veut les décompresser
find . -name \*.zip | awk '{print "unzip " $1}' | sh



Remplacer un motif dans une liste de fichier




Utilisation de find et sed pour remplacer par exemple un mot ou une expression dans tous les fichiers html d’un répertoire et de ses sous répertoires

find /path/to/dir -type f -exec sed -i ‘s/original/replacement/g’ {} \+

Exemples :

  • Effacer la chaine “http://192.168.150.1/stats/controller/”
find . -name "*.html" -exec sed -i 's/http:\/\/192\.168\.150\.1\/stats\/controller\///g' {} \+
  • Remplacer la chaine “http://192.168.150.1/stats/” par “../”
find . -name "*.html" -exec sed -i 's/http:\/\/192\.168\.150\.1\/stats\//\.\.\//g' {} \+

Penser à protéger les caractères spéciaux pour les expressions régulières



Monter une image ISO




par exemple pour monter l’image de systemrescuecd-x86-x.y.z.iso qui est un fichier iso présent sur un disque

mkdir -p /tmp/cdrom
mount -o loop,exec /path/to/systemrescuecd-x86-x.y.z.iso /tmp/cdrom

Auteur

← Plus anciens Plus récents →