Exécution automatisée des commandes Linux
Nous avons souvent besoin d'automatiser certains scripts qui s'exécutent régulièrement.
Il y a souvent des cas où nous devons entrer manuellement. Pour contourner ces validations interactives. J'ai choisi d'utiliser sshpass
et expect
pour résoudre.
sshpass
sshpass
est un outil de ligne de commande simple et léger qui nous permet de fournir un mot de passe à l'invite de commande elle-même (vérification de mot de passe non interactive).
installer :
yum install sshpass -y
utiliser :
sshpass -p ssh -o StrictHostKeyChecking=no @ "commande"
Exemple :
# Exécution de la commande à distance
sshpass -p ssh -o StrictHostKeyChecking=no @ "ls -al"
# Connexion à distance
sshpass -p ssh -o StrictHostKeyChecking=no @
attendre
expect
est également une programmation de script relativement simple et gratuitel langage basé sur TCL
, qui est utilisé pour communiquer des tâches automatiques et interactives sans intervention humaine.
Installer :
yum install -y expect
Utilisation courante :
send
: utilisé pour envoyer une chaîne au processusexpect< /code> : reçoit la chaîne du processus
spawn
: démarre un nouveau processusinteract
: Autorise l'interaction de l'utilisateur et donne le contrôle à la console, qui peut être actionnée manuellement à ce momentattend eof
: Cela correspond àspawn code> pour indiquer la fin de la capture des informations de sortie du terminal, similaire à
if….endif
Instructions spéciales:
La commandesend
reçoit un paramètre de chaîne et envoie le paramètre au processus, qui est généralement utilisé pour l'envoyer au processus démarré parla commandespawn
.
La commandeattendre
est l'opposé de la commandeenvoyer
. La commandeexpect
est généralement utilisée pour attendre les commentaires d'un processus.
La commandeexpect
peut accepter un paramètre de chaîne ou un paramètre d'expression régulière. Généralement utilisé pour attendre les commentaires du processus lancé par la commandespawn
.
Exemple :
Utilisez attendre
pour telnet ssh
#!/usr/bin/expect
# Dites au système quel shell utiliser pour exécuter le fichier
set timeout 30
# Définissez le délai d'attente en secondes, timeout -1 signifie jamais d'expiration
set HOST [lindex $argv 0]
# Affecte le premier paramètre à la variable HOST
set PASSWORD [lindex $argv 1]
# Attribuez le deuxième paramètre à la variable PASSWORD
spawn ssh [email protected]$HOST
# Démarrez un nouveau processus qui utilise le compte rootssh pour se connecter à distance à l'adresse $HOST
attendre {
"yes/no" {
envoyer "yes\\r" ;
exp_continue
}
"password :" {
send "$PASSWORD\\r"
}
}
# Multi-succursale en attente des commentaires du processus ssh
# Si la chaîne contient oui/non, exécutez la branche un
# Si la chaîne contient mot de passe :, exécutez la branche deux
# Où exp_continue est attaché à un élément de jugement attendu, de sorte que une fois l'élément mis en correspondance, il peut continuer à correspondre à l'instruction de jugement attendue "*#"
send "ll -a\\r"
# Les deux phrases ci-dessus sont exécutées lorsqu'une seule branche correspond # ll -a
attend eof
exit
# attend eof et exit signifie que lorsque eof est détecté, exit sera exécuté et le programme se terminera.
Utilisez expect imbriqué dans bash, et maven est automatiquement empaqueté dans leExemple #!/usr/bin/env bash
Commandes d'automatisation Linux
DIR_LIST=("module1" "module2" "module3" "module_build" "module4" "module5")
PASSWORD="mot de passe \\r"
for dir in ${DIR_LIST[@]}
do
# echo $dir
if [ -d "$dir" ]; then
rm -rf "$dir"
fi
GIT_URL="git clone -b dev [email protected]:/gitrepo/xxx/$dir"
# echo $GIT_URL
/usr/bin/expect <<-EOF
set timeout -1
spawn $GIT_URL
expect "*password:"
envoyer $PASSWORD
attendre eof
EOF
echo -e "\
"
done
sleep 1
mvn clean install -f module_build/ -Dmaven.test.skip=true
- Quel est le médicament contre la grippe intestinale ?
- Qu'est-ce qu'une boule dans l'anus
- qu'est-ce que la lactase
- Combien de temps faut-il pour qu'une lésion du ligament collatéral médial guérisse
- Quel médicament est bon pour les nodules mammaires
- Que faire si votre enfant avale du chewing-gum
- Quelle est la valeur normale de l'acide urique chez la femme ?
- sensibilité des seins avant les menstruations
- Quelles sont les glandes endocrines humaines ?
- Quels sont les avantages de manger des œufs d'oie pendant la grossesse
- Chirurgie des doubles paupières 3 ans de lanières de viande comment éliminer
- Diarrhée infantile
- Peut-on être infecté en dormant avec quelqu'un qui a une odeur corporelle ?
- L'importance de la détection des sous-ensembles de lymphocytes
- Chair à côté de la dent la plus interne
- Que faire si l'érection n'est pas assez dure
- Quelles sont les causes de la lombalgie chez les hommes
- Combien coûte la réduction du nez
- Quelle est la raison de la douleur dans la région du rein droit des femmes
- Diminution de la densité du parenchyme hépatique
Message chaud
- Que dois-je faire si le kyste ovarien change?
- Le service d'arbitrage vmware usb de la machine virtuelle Windows10 ne trouve pas comment résoudre
- Bonjour docteur, je voudrais demander, mes règles ont été retardées de huit jours, j'ai acheté des granules d'Agripaume et je les ai bu, mais...
- Quel est le problème avec les saignements pendant les rapports sexuels ?
- Les contraceptifs oraux à courte durée d'action sont-ils sûrs pour une utilisation à long terme ?
- Il s'agissait d'une chirurgie mini-invasive. Cela fait plus de deux mois. Les testicules sont encore un peu œdémateux, mais ce n'est pas aussi douloureux qu'au début, mais...
- Jours de congé après la chirurgie du kyste de Bartholin
- Comment résoudre l'écran bleu d'Ark Survival Evolved sur Windows 10
- Puis-je prendre des pilules Xiaoyao pour l'insomnie ?
- Que faire si l'ouverture vaginale est rompue