Accueil » Ligne de commande » Script » Page 5
Pour un programme /usr/local/bin/test.sh, on va créer un fichier test.service dans le répertoire de configuration de Systemd, /etc/systemd/system/ :
vi /etc/systemd/system/test.service
Et on y mets ça:
[Unit]
Description=Mon service test
After=tlp-init.service
[Service]
Type=oneshot
RemainAfterExit=no
User=starmate
ExecStart=/usr/local/bin/test.sh
[Install]
WantedBy=multi-user.target
On démarre le service:
systemctl start test.service
Puis on l’active au démarrage :
systemctl enable test.service
Boucle for à mettre dans son .bashrc :
vi ~/.bashrc
On met la boucle a fin la du fichier.
function fermer {
BAK=$IFS
IFS=$'\n'
for id in $(ps aux | grep -P -i $1 | grep -v "grep" | awk '{printf $2" "; for (i=11; i<NF; i++) printf $i" "; print $NF}'); do service=$(echo $id | cut -d " " -f 1) if [[ $2 == "-t" ]]; then echo $service \"$(echo $id | cut -d " " -f 2-)\" "peut-être tué" else echo $service \"$(echo $id | cut -d " " -f 2-)\" "a été tué" for signal in "TERM" "INT" "HUP" "KILL" "9"; do kill -$signal $service RETVAL=$? [ $RETVAL -eq 0 ] && break echo "Attention: le kill n'a pas marché: pid=$service, signal=$signal" >&2
sleep 1
done
fi
done
IFS=$BAK
}
A défaut de ré-ouvrir un shell, on doit sourcer son .bashrc pour une prise en compte immédiate:
cd ~
source .bashrc
On peut visualiser les pids qui vont etre tués via un mode test:
fermer nom_du_programme -t
Et dés qu’on est sur:
fermer nom_du_programme
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
Un petit script pour tuer un processus qui dure trop longtemps (ici php):
#!/bin/bash
/bin/ps -eo pid,etime,command|/bin/grep /usr/local/zend/bin/php|/bin/egrep '([0-9]+)([ ]+)([2-9]{1}[0-9]{1}:[0-9]{2})'|/bin/awk '{print $1}'|xargs -I{} kill {}
Si vous avez besoin de vous connecter automatiquement avec un utilisateur sur une machine au démarrage de celle-ci, il suffit de désactiver le gestionnaire de connexion. Pour cela, il suffit créer ce service dans SystemD
Création du répertoire de destination:
mkdir -pv /etc/systemd/system/getty@tty1.service.d/
Créer un fichier de configuration:
vi /etc/systemd/system/getty@tty1.service.d/autologin.conf
Coller ce qui suit, en changeant $utilisateur par l’utilisateur de votre choix:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin $utilisateur --noclear %I 38400 linux
Permettre le démarrage du service :
systemctl enable getty@tty1.service
Au prochain redémarrage la machine sera automatiquement connectée avec l’utilisateur choisi.