jeudi 29 mars 2012

Commande awk


Affichage des deux premières colonnes

[bob@centos ~]$ ps aux | awk '{ print $1,$2 }'
USER PID
root 1
root 2
root 3
root 4
root 5
root 6

mardi 27 mars 2012

Commande débogage script shell


Affiche la commande avant le résultat (commande set -x)

[bob@centos ~]$ cat script.sh
#!/bin/bash

set -x
pwd
set +x
pwd


[bob@centos ~]$ ./script.sh
+ pwd
/home/bob
+ set +x
/home/bob
[bob@centos ~]$

dimanche 25 mars 2012

Calcul avec le shell


En fonction du shell

[bob@centos ~]$ ((var=12+1))
[bob@centos ~]$ echo $var
13
[bob@centos ~]$ var1=$(expr 12 + 1)
[bob@centos ~]$ echo $var1
13
[bob@centos ~]$

Pour une multiplication

[bob@centos ~]$ var1=$(expr 12 \* 2)
[bob@centos ~]$ echo $var1
24
[bob@centos ~]$ ((var=12*21))
[bob@centos ~]$ echo $var
252
[bob@centos ~]$

vendredi 23 mars 2012

Linux commande test


Test sur un fichier, puis un répertoire avec affichage de la valeur de retour de la commande ($?)

root@boo:~# test -f fr-Paris ; echo $?
0
root@boo:~# test -f Images ; echo $?
1
root@boo:~#


Ou bien:

root@boo:~# [ -d Images ]
root@boo:~# echo $?
0
root@boo:~# [ -f Images ]
root@boo:~# echo $?
1
root@boo:~#


Les options:

-f : test d'un fichier
-d: test d'un répertoire
-r: autorisation en lecture
-w: autorisation en écriture
-x : autorisation en exécution
-e: le fichier existe
-s : le fichier n'est pas vide
-a : et
-o : ou
! : non

test sur les nombres:
-eq : égal
-ne: différent
-gt: supérieur
-lt: inférieur
-le: inférieur ou égal
-ge: supérieur ou égal

test sur les chaines:
-z: variable vide
-n: variable non vide
chaine=chaine: oui si les chaines sont identiques
chaine!=chaine: oui si les chaines sont différentes

jeudi 22 mars 2012

shell : commande set


Le script affiche la date puis décompose l'heure (voir le role de la variable IFS).

[bob@centos ~]$ cat sc-date
#!/bin/bash
# decomposition de la date avec la commande set
set $(date)

#  on affiche l'ensemble puis uniquement deux paramètres
echo -e "$*\n"
echo "Le mois est $2 et l'heure est: $4"

IFS=:
set $4
echo "l'heure est $1, les minutes sont: $2 et les secondes: $3"


[bob@centos ~]$
[bob@centos ~]$ ./sc-date
jeu. mars 15 10:32:05 CET 2012

Le mois est mars et l'heure est: 10:32:05
l'heure est 10, les minutes sont: 32 et les secondes: 05
[bob@centos ~]$

mardi 20 mars 2012

Variable des arguments d'un script


Le script suivant affiche quelque variable:

[bob@centos ~]$ cat sc-var-shell
#!/bin/bash

echo "Affichage du nom du script: $0"
echo "Affichage du nombre d'argument: $#"
echo "Affichage du numero de processus du script: $$"
echo "Affichage de la liste des arguments: $*"
echo "Affichage du premier argument: $1"
echo "Affichage du deuxieme argument: $2"
echo "Affichage du troisieme argument: $3"
[bob@centos ~]$


Exécution du script:

[bob@centos ~]$ ./sc-var-shell arg1 arg2 arg3 arg4
Affichage du nom du script: ./sc-shell
Affichage du nombre d'argument: 4
Affichage du numero de processus du script: 3140
Affichage de la liste des arguments: arg1 arg2 arg3 arg4
Affichage du premier argument: arg1
Affichage du deuxieme argument: arg2
Affichage du troisieme argument: arg3
[bob@centos ~]$

lundi 19 mars 2012

Script de connexion linux


Fichiers exécutés à la connexion d'un utilisateur:
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
A la déconnexion:
~./bash_logout
A l'ouverture d'un shell
~/.bashrc

mardi 13 mars 2012

Affichage du shell, historique, option du shell


Afficher les shells disponibles

[bob@centos ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
[bob@centos ~]$
[bob@centos ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
[bob@centos ~]$



Afficher le shell de connexion

-sh-3.2$ ps
  PID TTY          TIME CMD
 3167 pts/0    00:00:00 sh
 3189 pts/0    00:00:00 ps

Ou bien

-sh-3.2$ echo $SHELL
/bin/sh
-sh-3.2$


Changer son shell


-sh-3.2$ chsh --h
Usage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ]
       [ nom-usager ]
-sh-3.2$ chsh -s /bin/bash
Modification du shell pour bob.
Mot de passe :
Shell a changé.
-sh-3.2$

Il faut ensuite se reconnecter.


Connaitre le type d'une commande (interne ou externe)

[bob@centos ~]$ type echo
echo is a shell builtin
[bob@centos ~]$
[bob@centos ~]$ type grep
grep is /bin/grep


Affichage des variables du shell

[bob@centos ~]$ set
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")
BASH_VERSION='3.2.25(1)-release'
COLORS=/etc/DIR_COLORS.xterm
COLUMNS=80
DIRSTACK=()
EUID=500
GROUPS=()
G_BROKEN_FILENAMES=1
HISTFILE=/home/bob/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
...


Affichage des variables exportées du shell

[bob@centos ~]$ env
HOSTNAME=centos.domaine.fr
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/0
USER=bob
...


Affichage des options du shell

[bob@centos ~]$ set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
...


Activation / désactivation d'une option

[root@centos bob]# set -o | grep emacs
emacs           on
[root@centos bob]# set +o emacs
[root@centos bob]# set -o | grep emacs
emacs           off
[root@centos bob]# set -o emacs
[root@centos bob]# set -o | grep emacs
emacs           on
[root@centos bob]#


Affichage du prompt du style -utilisateur@nom machine réperoire actuel:

[root@centos bob]# echo $PS1
[\u@\h \W]\$


Raccourci pour la commande history

Affichage puis exécution de la dernière commande

[bob@centos home]$ ls /etc | tail -2
yum.conf
yum.repos.d
[bob@centos home]$!!

ls /etc | tail -2
yum.conf
yum.repos.d


Rappel de la commande ayant le numéro 203 dans l'historique

[bob@centos home]$ history | tail -5
  206  pwd
  207  history
  208  ls /etc | tail -2
  209  ls
  210  history | tail -5
[bob@centos home]$ !208
ls /etc | tail -2
yum.conf
yum.repos.d
[bob@centos home]$


Rappel de la dernière commande en substituant des caractères

[bob@centos home]$ ls /etc | tail -2
yum.conf
yum.repos.d
[bob@centos home]$ !!:s^etc^home
ls /home | tail -2
bob
[bob@centos home]$


Affiche la commande sans l'exécuter

[bob@centos home]$ !!:p
ls /home | tail -2
[bob@centos home]$

Linux commande wc


Pour compter concernant un fichier :
-l : nombre de lignes
-c : nombre d'octets
-w : nombre de mots
-m : nombre de caractère
 root@boo:~# wc fr-Paris
   8  65 355 fr-Paris
root@boo:~# wc -l fr-Paris
 8 fr-Paris
root@boo:~# wc -w fr-Paris
 65 fr-Paris
root@boo:~# wc -m fr-Paris
 355 fr-Paris
root@boo:~#

lundi 12 mars 2012

Suppression du cache DNS sous Windows

La commande pour supprimer le cache DNS (à exécuter le cas échéant en mode administrateur) est:

 Microsoft Windows [version 6.0.6002] Copyright (c) 2006 Microsoft Corporation. Tous droits réservés.
 C:\Windows\system32>ipconfig /flushdns
 Configuration IP de Windows Cache de résolution DNS vidé.
 C:\Windows\system32>

dimanche 11 mars 2012

Mémo Javascript


Ajout au balise meta:
<meta http-equiv="Content-Script-Type" content="text.javascript" />

Balise d'insertion dans le code:
<script> le code </script>
Ou bien
<script type="text/javascript">
//<![CDATA[
code cdata dans le code xhtml
//]]>
</script>

Si le code est dans un fichier spécifique:
<script src="nom_fichier.js"></script>

Le code est placé dans le fichier directement (sans balise)
Ecrire un texte:
document.write("le texte");

Déclaration d'une fonction:
function nomdelefonction(){
document.write("affiche le texte");
}

Appel de le fonction:
nomdelafonction();

Quelques évènements:
onclick
onfocus
onload
onunload
onmouseover
onmouseout
onsubmit


Coût ospf - interfaces Giga et 10G - cisco


Le lien utilisé sera celui qui aura le coût le plus bas.
la référence de calcul utilise des liens à 100Mbit/s.
Avec des interfaces giga ou 10 giga, il faut ajouter la commande suivante à la configuration ospf:
Giga:
auto-cost reference-bandwidth 1000
10Giga
auto-cost reference-bandwidth 10000

vendredi 9 mars 2012

Linux - occupation du disque


Occupation du disque (h : format humain):
chloe@boo:~$ df -h
Sys. de fichiers            Taille  Uti. Disp. Uti% Monté sur
/dev/sda2              15G  623M   14G   5% /
none                 1000M  752K  999M   1% /dev
none                 1006M  320K 1006M   1% /dev/shm
none                 1006M  372K 1006M   1% /var/run
none                 1006M     0 1006M   0% /var/lock
/dev/sda7              87G   70G   13G  85% /home
/dev/sda5              15G  5,1G  8,7G  37% /usr
/dev/sda6              16G   13G  1,6G  90% /var
clhoe@boo:~$
Occupation du disque par arborescence (option: m: MégaOctet, k: KiloOctet)
chloe@boo:/usr$ du -m
Uniquement le total pour un répertoire (dans l'exemple sur "games")
chloe@boo:/usr$ du -ks games/
2504    games/

dimanche 4 mars 2012

Commande sed, cut et sort


sed

Remplacement:
#sed -e "s/a-remplacer/nouveau/" nomdufichier

Remplacer toutes les occurences:
#sed -e "s/a-remplacer/nouveau/g" nomdufichier

Afficher une ligne particulière en utilisant son numéro (dans l'exemple la ligne 355)
# sed -n 355p nomdufichier.txt

Supprimer les lignes vides
# sed -e '/^$/d' NomFichier


Supprime les lignes du fichier fic qui commence par #
$ sed -e '/^#/d' fic

Affiche les lignes du fichier fic qui commence par #
$ sed -e '/^#/p' fic

Afficher les dix premières lignes du fichier passwd
[bob@centos ~]$ sed -n '1,10 p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
[bob@centos ~]$



cut
Affiche uniquement certaine colonne d'un fichier.
#cut -cNuméro-de-colonne fichier

Peut également afficher des champs (option -f). Le caractère de séparation (par défaut la tabulation) est modifié via l'option -d.

Exemple:
clem@eee-pc:~$ cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
Affiche le nombre de groupes uniques utilisés dans /etc/passwd
[bob@centos ~]$ cut -d: -f4 /etc/passwd | sort -n | uniq | wc -l
29
[bob@centos ~]$

sort

Permet de faire des tris sur une colonne ou un champ.

Exemple:
clem@eee-pc:~$ cut -d: -f1 /etc/passwd | sort
avahi
avahi-autoipd
backup
bin
clamav

Tri par uid dans le fichier passwd
-n: tri numérique
-t: séparateur de champ
-k: le numéro du champ

[bob@centos ~]$ sort -n -t: -k3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

Bonus: uniq supprime les doublons.

vendredi 2 mars 2012

Monter un cdrom sous linux


Créer le point de montage
[root@linux /]# mkdir /mnt/cdrom
Puis monter le cdrom
[root@linux /]# mount -t iso9660 /dev/cdrom /mnt/cdrom
Pour démonter
[root@linux /]# umount /mnt/cdrom
Pour vérifier les partitions montées
[root@linux /]# mount
Pour info: le fichier /etc/fstab contient les partitions montées au démarrage du système.

jeudi 1 mars 2012

Expression régulière perl - javascript

abc a n'importe quel endroit de la chaine
^abc au début de la chaine
abc$ a la fin de la chaine
abc* ab suivit de 0 ou de un ou plusieurs c
abc+ ab puis un ou plusieurs c
abc? ab puis un 0 ou un c
.abc un caractère puis abc
.+abc plusieurs caractère puis abc
\btest\b trouve le mot "test"
\Btest\B la chaine test à l'intérieur d'un mot
a|b a ou b
[abc] a ou b ou c
[a-z] n'importe quel caractère de a à z
[0-9] n'importe quel chiffre de 0 à 9
a{3} le caractère a 3 fois
a{3,} a au moins 3 fois
a{3,5} a entre 3 et 5 fois
 
\s espace vide (retour chariot, saut de ligne, espace, ...
\n saut de ligne
\r retour charriot
\d les caractères numériques

Comment ajouter une route statique sur une distribution Linux Ubuntu

Pour ajouter une route statique au démarrage d'Ubuntu, voici le fichier à modifier. Dans l'exemple on ajoute une route pour joindre ...