Étiquette : Shell

3 janvier 2017 /

Je reprend l’exemple d’un fichier texte contenant une multitude d’identifiants.
Des identifiants qui commencent par 4 chiffres puis 2 lettres (exemple: 1502KQ) respecte le standard voulu, les autres non.

Nous souhaitons donc isoler les identifiants ne correspondant pas à ce standard.

Pour cela, crée un fichier, test.txt par exemple, et on y inscrit cette liste d’identifiants:

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
ADMIN01
ADMIN26
BIZOT
4569DF
BOURGAINET
CHACONNI
4126NR
4685ET
D?ALES
5016NW
DESOUSASSE06
FITGERERT
FRANCINETTE

Pour afficher les occurrences qui correspondent à notre expression régulière, [0-9]{4}[a-zA-Z]{2} (pour 4 chiffres et 2 lettres en minuscule ou majuscule):

egrep "[0-9]{4}[a-zA-Z]{2}" test.txt

7737OM
8053HR
8184MH
8579MX
9254NF
1034AP
4569DF
4126NR
4685ET
5016NW

Pour afficher au contraire les occurrences qui correspondent pas à notre expression régulière, on rajoute l’option « -v »:

egrep -v "[0-9]{4}[a-zA-Z]{2}" test.txt

ADMIN01
ADMIN26
BIZOT
BOURGAINET
CHACONNI
D?ALES
DESOUSASSE06
FITGERERT
FRANCINETTE

Note: On peut également utiliser grep avec l’option « -E » qui forcer grep à se comporter comme egrep:

grep -E "[0-9]{4}[a-zA-Z]{2}" test.txt

Autres exemples:

Recherche les mots dont b n’est pas suivi de o:

egrep "b[^o]" test.txt

Recherche toute ligne qui commence par « De: », « Sujet: » ou « Date: »:

egrep "^(De|Sujet|Date):" test.txt

Recherche et affiche chaque ligne du fichier test.txt qui contient l’occurence bonjour ou Bonjour, les numéros de ligne sont également affichés (option -n):

egrep -n "[bB]onjour" test.txt

Liste toute les lignes du fichier test.txt commençant avec le caractère $:

egrep "^\\$" test.txt

Liste tous les fichiers et répertoires dans le répertoire courant qui ne se terminent pas avec .txt:

ls -l | egrep "[^.txt]$"

Liste tous les fichiers et répertoires dans le répertoire courant qui se terminent avec .txt:

ls -l | egrep "[.txt]$"

Affiche uniquement les lignes dont le numéro de téléphone commence par un 1:

egrep "^1" test.txt

Recherche les lignes avec un 2 à la seconde position et n’importe quel caractère en première position:

egrep "^.2" test.txt

Recherche les lignes dont le premier caractère est différent de 1:

egrep "^[^1]" test.txt

5 novembre 2015 /

Cette méthode est à utiliser avec des serveurs FTP ne contenant pas de données sensibles, car les identifiants de connexion sont stockés en clair.
Ce script permet de télécharger du serveur ftp « ftp.test.fr » le fichier « test.txt » en utilisant l’identifiant « test » et le mot de passe « t4st »

#!/bin/bash
ftplogin="test"
ftppasswd="t4st"
url_ftp="ftp.test.fr"
fichier="test.txt"
# On se positionne dans le dossier /home/test/ftp
# où sera téléchargé le fichier du serveur FTP
cd /home/test/ftp
ftp -in <<EOF
open $url_ftp
user $ftplogin $ftppasswd
get $fichier
close
bye
EOF
# Peut être complété par d'autre commande ici, notamment sur le fichier téléchargé.
exit 0

15 octobre 2015 /

Si vous avez besoin de stopper le défilement de votre terminal (figer la sortie standard) voici la solution :

Ctrl+s

Pour réactiver le défilement:

Ctrl+q

ça fonctionne aussi avec la commande top, ou tail et avec toute autre commande de ce type d’ailleurs.

5 août 2015 /

Parfois lors d’une tentative de démontage d’une partition, on peut avoir ce message d’erreur « Le volume est occupé ».
On peut résoudre ce problème facilement.

Pour lister les processus empêchant la partition d’être démontée:

fuser /chemin/partition

Pour fermer les processus accédant à la partition (marche aussi pour un fichier).

fuser -km /chemin/partition

Si cela ne fonctionne pas, vous pouvez essayer cette première commande pour récupérer les Pids des applications accédant au volume:

lsof +D /chemin/partition

Maintenant que vous avez les Pid il ne reste plus qu’a les tuer :

kill -9 n°_PID

31 juillet 2015 /

Afficher l’état de tous les services:

svcs -a

Afficher l’état d’un service en particulier:

svcs ssh

Rechercher un service:

svcs -a | grep ssh

Activer / désactiver / relancer / relire le fichier de conf :

svcadm enable ssh
svcadm disable ssh
svcadm restart ssh
svcadm refresh ssh

On peut tuer un service (ici Cron) avec une des commandes suivante :

pkill -9 cron
svcs –p cron

Connaitre les services en erreurs :

svcs -x

Connaitre les services en erreur et les impacts:

svcs -x -v

Connaitre les processus associés a un services:

svcs -p network/smtp:sendmail

STATE STIME FMRI
online 18:20:30 svc :/network/smtp:sendmail
18:20:30 655 sendmail
18:20:30 657 sendmail

Puis:

ps -fp 655,657

Connaitre les services qui dépende d’un autre (ici sendmail):

svcs -d network/smtp:sendmail

Connaître les services nécessaires pour lancer un service donné(ici sendmail):

svcs -D network/smtp:sendmail