User Tools

Site Tools


coursieps:20050225
scripting (suite)

Exercices

Faire un script copycd qui copie un CD-ROM. utiliser les commandes:

  • dd
  • eject
  • cdrecord
#!/bin/sh
dd if=/dev/hdc of=/home/linux/copycd.iso
eject /dev/hdc
echo "inserer un CD-ROM vierge et appuyer sur 'entree'"
read var
cdrecord dev=ATAPI:0,0,0 /home/linux/copycd.iso

On peut ensuite associer le script à un bouton xfce pour se faciliter l'appel au script. cocher “exécuter dans un terminal”

Il faut s'assurer que l'utilisateur appelant le script à le droit de lire depuis le lecteur de CD-ROM.

ls -l /dev/hdc
brw-rw----  1 root disk 22, 0 2004-09-18 13:51 /dev/hdc
adduser linux disk

N.B: il faut se délogguer et se relogguer pour que ça prenne effet.

script chkfile qui vérifie si le fichier passé en argument existe dans le répertoire courant. cf. plus haut (déjà fait)

Exemple de script donné:

for fichier in *
do
  if grep -q $1 $fichier
  then
    echo "$1 trouve dans :"
    ls -l | grep $fichier
    echo ""
    more $fichier
  fi
done

Ce script va parcourir le répertoire courant. Il va chercher dans chaque fichier si la chaîne de caractère passée comme argument se trouve dans un des fichiers du répertoire courant.

case

Syntaxe:

case variable in
  sol1) instruction;;
  sol2) instruction;;
  sol3) instruction;;
esac

Exemple:

case $texte in
  oui) echo "OK";;
  non) echo "pas OK";;
  *) echoe "veuillez repondre par oui ou non";;
esac

vérifie la valeur de la variable texte: si c'est oui, il affiche OK, si c'est non il affiche pas OK, sinon, il affiche veuillez…

Exercice: Question dont la réponse est oui ou non

echo "Voulez-vous supprimez l'image ISO?"
read reponse
case $reponse in
  oui) rm /home/linux/copycd.iso;;
  non) echo "l'image est conservée comme /home/linux/copycd.iso";;
  *) echo "merci de répondre par oui ou non à l'avenir; l'image est conservée comme /home/linux/copycd.iso";;
esac

A rajouter au script copycd.sh

commande de backup de /home/user

#!/bin/sh
echo "Sauvegarde de `du -hs $HOME` en cours..."
if [ ! -d ~/backup ]; then mkdir ~/backup
fi
mkisofs -o ~/backup/`whoami`_`date ))iso-8601` $HOME 2>>  ~/cdbck.log
echo "Sauvegarde terminee"

La commande entre ` ` est exécutée avant l'affichage par echo. On peut aussi faire $(). La valeur de la commande est injectée dans la commande echo.

alias
alias c=clear

si je tape

c

il va exécuter

clear

Pour connaître la liste des alias existants:

alias

Il y a des alias prêts à être activés dans le fichier ~/.bashrc:

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval `dircolors`
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

Pour les activer, il suffit de les décommenter (enlever les #). Pour que cela soit actif, soit se délogguer et se relogguer, soit taper:

cd
source .bashrc
Lancer des commandes a un moment precis

at

Différer l'exécution d'une tâche.

at 17:00

Il y a un prompt où on peut entrer les actions à effectuer à ce moment-là

at 17:00
> touch toto.txt
> 

Pour sortir: ctrl+d

Pour le faire à une heure et une date précise:

at 14:00 02/18/2005

(format de date américain: mm/dd/yyyy)

atq liste les opérations en attente (dans la queue) atrm <numero de l'opération> pour retirer un une opération.

cron

Exécution d'une tâche à un moment donné. On peut répéter les taches à intervalles définis.

Pour éditer l'agenda:

crontab -e

On se retrouve dans l'éditeur par défaut 1)?). Paramètres: min heure jour mois jour_sem commande

Pour tous les jours à 17:00:

0 17 * * * * /home/linux/backup_sim.sh

Il existe des raccourcis: @hourly: tourne toutes les heures @daily: tourne tous les jours @weekly: tourne une fois par semaine @monthly: tourne une fois par mois @yearly: tourne tous les ans @reboot: tourne quand la marchine démarre

cron se lance quoi qu'il arrive. On peut moduler la priorité avec la commande nice (ordonnancement).

anacron

Extension de cron qui, si la machine est éteinte quand elle devait faire l'action, elle sera effectuée au prochain boot. anacron lance les commandes en fonction de la charge processeur (il utilise nice).

1)
(/vi
coursieps/20050225.txt · Last modified: 2013/01/30 17:50 (external edit)