Archive

Archives pour la catégorie ‘Système’

Introduction aux scripts shell

18/12/2023 Comments off

Vous venez d’apprendre à utiliser un éditeur de texte puissant comme Vim. Cela va vous être particulièrement utile pour les chapitres à venir.

Entrons maintenant dans le vif du sujet : la programmation shell. De quoi s’agit-il ?

Imaginez un minilangage de programmation intégré à Linux. Ce n’est pas un langage aussi complet que peuvent l’être le C, le C++ ou le Java par exemple, mais cela permet d’automatiser la plupart de vos tâches : sauvegarde des données, surveillance de la charge de votre machine, etc.

On aurait très bien pu faire tout cela en créant un programme en C par exemple. Le gros avantage du langage shell est d’être totalement intégré à Linux : il n’y a rien à installer, rien à compiler. Et surtout : vous avez très peu de nouvelles choses à apprendre. En effet, toutes les commandes que l’on utilise dans les scripts shell sont des commandes du système que vous connaissez déjà : ls, cut, grep, sort…

On parlera beaucoup de shell dans cette section. De quoi s’agit-il exactement ? Nous répondrons à cette question en premier.
Ensuite, nous réaliserons notre tout premier script shell qui affiche un message à l’écran… et nous pourrons alors passer aux choses sérieuses dès le chapitre suivant !

Qu’est-ce qu’un shell ?

Dès le début, j’ai fait la distinction entre les deux environnements très différents disponibles sous Linux :

  • l’environnement console ;
  • l’environnement graphique.

La plupart du temps, sur sa machine, on a tendance à utiliser l’environnement graphique, qui est plus intuitif. Cependant, la console est aussi un allié très puissant qui permet d’effectuer des actions habituellement difficiles à réaliser dans un environnement graphique.

Je vous avais dit qu’il y avait plusieurs environnements graphiques disponibles (Unity, KDE, XFCE…) mais qu’il n’y avait qu’une seule console. J’ai menti.

Il existe plusieurs environnements console : les shells

La différence est moins tape-à-l’œil que dans le mode graphique (où l’on voit tout de suite que les menus ne sont pas à la même place, par exemple).

La console a toujours un fond noir et un texte blanc, je vous rassure (quoique ça se personnalise, ça). En revanche, les fonctionnalités offertes par l’invite de commandes peuvent varier en fonction du shell que l’on utilise.

Lire la suite…

Categories: Système Tags: , , ,

Utilisation d’un iMac en tant qu’écran avec le mode d’affichage cible

18/12/2023 Comments off

Le mode d’affichage cible permet d’utiliser l’écran intégré d’un iMac pris en charge en tant qu’écran externe pour un autre ordinateur Mac.

 
 

À propos du mode d’affichage cible

Pour utiliser un iMac en tant qu’écran, connectez-le à un autre ordinateur Mac à l’aide du câble adéquat (voir Configuration système requise ci-dessous). Appuyez ensuite sur les touches Commande + F2 du clavier relié à l’iMac. Appuyez de nouveau sur cette combinaison de touches pour mettre fin au mode d’affichage cible.

Configuration système requise

Démarrer le mode d’affichage cible

Quitter le mode d’affichage cibleOptions d’affichage

Configuration système requise

Pour pouvoir utiliser le mode d’affichage cible, vous devez disposer des éléments suivants :

Lire la suite…

Categories: Système Tags: ,

BASH: Vérifier qu’une commande existe

17/12/2023 Comments off

Comment vérifier qu’une commande existe en Bash ?
Comment vérifier la disponibilité des prérequis d’un script ?

Une méthode permettant de vérifier qu’une commande existe consiste à tester le retour de « command -v <commande_a_tester> » :

fhh@mafalda ~ $ command -v ls
alias ls='ls --color=auto'
fhh@mafalda ~ $ echo $?
0
fhh@mafalda ~ $ command -v ls > /dev/null && echo "ls existe" ls existe
 

Si la commande existe et est accessible via le PATH ou au chemin spécifié, « command -v » retourne « 0 », sinon, le retour est supérieur à « 0 » :

fhh@mafalda ~ $ command -v youhou
# youhou n'existe pas dans le PATH ou comme commande interne :
fhh@mafalda ~ $ echo $?
1
fhh@mafalda ~ $ command -v ../../usr/bin/date
# date est accessible au chemin spécifié :
fhh@mafalda ~ $ echo $?
0

Lire la suite…

Categories: Système Tags: , ,

BASH : Suppression des accents, cédilles, etc

17/12/2023 Comments off

Comment supprimer les accents, cédilles, etc, dans une chaine de caractères ?

Méthode classique : la substitution

La suppression des caractères accentués et autres cédilles peut être effectuée, en Bash, en utilisant « sed » ou « tr » :

fhh@aaricia ~ $ _str="Une chaine avec des é, des Ù, des À, des ç et des œ"
fhh@aaricia ~ $ echo $_str | sed 'y/áàâäçéèêëîïìôöóùúüñÂÀÄÇÉÈÊËÎÏÔÖÙÜÑ/aaaaceeeeiiiooouuunAAACEEEEIIOOUUN/' Une chaine avec des e, des U, des A, des c et des œ

La méthode est fonctionnelle mais sous entend que tous les caractères à substituer aient été définis. Dans l’exemple, le « œ » n’a pas été remplacé car aucun caractère de remplacement ne lui est alloué.

Autre problème de cette méthode, remplacer une lettre par deux autres tel que « œ » par « oe » ou le « ß » allemand par « ss » nécessite la définition de règles particulières à chaque cas.

Ce sont ces raisons qui nous poussent à éviter cette méthode au profit de la conversion de chaines de caractères.

Méthode recommandée : la conversion

Plus complète, la méthode de conversion présente en sus l’avantage d’être plus concise.

« iconv » est utilisé pour « convertir » la chaine de caractères du format de base, UTF-8 dans l’exemple (option « -f » pour « from »), vers le format ASCII (option « -t » pour « to »).

Avec l’option « TRANSLIT », si un caractère ne peut être transcrit dans le format de destination, il est converti en une chaine de caractère équivalente.

fhh@aaricia ~ $ _str="Une chaine avec des é, des Ù, des À, des çÇ et des œ"
fhh@aaricia ~ $ echo $_str | iconv -f utf8 -t ascii//TRANSLIT Une chaine avec des e, des U, des A, des cC et des oe

La méthode fonctionne sur un large panel de caractères :

fhh@aaricia ~ $ echo "\"ß\"" | iconv -f utf8 -t ascii//TRANSLIT "ss"
fhh@aaricia ~ $ echo "āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛ" | iconv -f utf8 -t ascii//TRANSLIT aaaaeeeeiiiioooouuuuuuuuAAAAEEEEIIIIOOOOUUUUUUUU

et peut être utilisée sur des fichiers :

fhh@aaricia ~ $ cat myfile.txt Une chaine avec des é, des Ù, des À, des ç et des œ   et même des "ß"
fhh@aaricia ~ $ iconv -f utf8 -t ascii//TRANSLIT < myfile.txt > noaccents.txt
fhh@aaricia ~ $ cat noaccents.txt Une chaine avec des e, des U, des A, des c et des oe   et meme des "ss"
 
Categories: Système Tags: , , ,

Rsync : Sync Files/Directories

16/12/2023 Comments off

Copy files or directories from one location to an another host by rsync.

If you’d like to set rsync automatically by cron or others, it need to configure like follows because authentication is required without settings. For example, Copy files or directories under the [/root/work] on dlp.srv.world to [/home/backup] on www.srv.world.

[1] Configure on source host.

root@dlp:~# apt-get -y install rsync
root@dlp:~# vi /etc/rsync_exclude.lst
# specify files or directories you'd like to exclude to copy
test
test.txt

[2] Configure on destination host.

root@www:~# apt-get -y install rsync
root@www:~# vi /etc/default/rsync
# line 8: change
RSYNC_ENABLE=true
root@www:~# vi /etc/rsyncd.conf
# create new
# any name you like
[backup]
# destination directory to copy
path = /home/backup
# hosts you allow to access
hosts allow = 10.0.0.30
hosts deny = *
list = true
uid = root
gid = root
read only = false
root@www:~# mkdir /home/backup
root@www:~# systemctl start rsync

[3] It’s OK. Execute rsync on Source Host like follows.

root@dlp:~# rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /root/work/ www.srv.world::backup
# Add in cron if you'd like to run reguraly
root@dlp:~# crontab -e
# for example, run at 2:00 AM in a day
00 02 * * * rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /root/work/ www.srv.world::backup
Categories: Système Tags: , , ,