recherche
MaisonOpération et maintenanceexploitation et maintenance LinuxExemples pour expliquer la commande expect pour implémenter l'interaction automatisée Shell

Dans cet article, nous utiliserons un exemple pour expliquer la commande expect afin de réaliser une interaction automatisée Shell. Nous pouvons implémenter des fonctions de flux de contrôle simples via Shell, telles que le bouclage, le jugement, etc. L'article suivant vous présente principalement les informations pertinentes sur l'utilisation de la commande expect pour réaliser une interaction automatisée du shell. L'article le présente en détail à travers un exemple de code. Les amis dans le besoin peuvent s'y référer.

Contexte

Il existe de nombreux scénarios dans les scripts Linux pour les opérations à distance, tels que la connexion à distance SSH, la copie à distance SCP, le transfert de fichiers SFTP, etc. Ces commandes impliqueront la saisie d'un mot de passe de sécurité. L'utilisation normale de la commande nécessite la saisie manuelle du mot de passe et l'acceptation de la vérification de sécurité. Afin de réaliser des opérations à distance automatisées, nous pouvons emprunter la fonctionnalité d'expect.

expect est un langage d'outil de programmation gratuit utilisé pour réaliser des tâches de communication automatiques et interactives sans intervention humaine. Expect évolue constamment. Au fil du temps, ses fonctions deviennent de plus en plus puissantes et il est devenu un puissant assistant pour les administrateurs système. Expect nécessite la prise en charge du langage de programmation Tcl. Pour exécuter Expect sur le système, Tcl doit d'abord être installé.

L'installation de Expect

expect est créée sur la base de Tcl, nous devons donc d'abord installer Tcl avant d'installer Expect.

(1) Installation Tcl

Page d'accueil : http://www.tcl.tk

Adresse de téléchargement : http://www. tcl .tk/software/tcltk/downloadnow84.tml

1. Téléchargez le package de code source

wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz

2. Décompressez le package de code source

tar xfvz tcl8.4.11-src.tar.gz

3. Configuration de l'installation

cd tcl8.4.11/unix 
./configure --prefix=/usr/tcl --enable-shared 
make 
make install

Remarque :

1 Une fois l'installation terminée, entrez le répertoire racine du code source tcl et copiez tclUnixPort.h sous le. sous-répertoire unix vers le sous-répertoire générique middle.

2. Ne supprimez pas encore le code source tcl, car il est toujours nécessaire pour le processus d'installation prévu.

(2) installation attendue (nécessite la bibliothèque Tcl)

Page d'accueil : http://expect.nist.gov/

1. Package source

wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download

2. Décompressez le package source

tar xzvf expect5.45.tar.gz

3. Configuration d'installation

cd expect5.45 
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic 
make 
make install 
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect

attendez

attendez-vous Le noyau est le spawn, l'attente, l'envoi et la définition.

spawn appelle la commande à exécuter

  • attendez-vous à ce que les informations d'invite de commande apparaissent, c'est-à-dire pour capturer l'invite de saisie de l'utilisateur :

  • send envoie des valeurs qui nécessitent une interaction, remplaçant la saisie manuelle de l'utilisateur

  • set définit les valeurs des variables

  • interagir une fois l'exécution terminée Maintenir l'état interactif et donner le contrôle à la console À ce stade, vous pouvez opérer manuellement. S'il n'y a pas de phrase de ce type, il se fermera une fois la connexion terminée, au lieu de rester sur le terminal distant.

  • expect eof Ceci doit être ajouté et correspond à spawn pour indiquer la fin des informations de sortie du terminal de capture, similaire à if....endif

expect Le script doit se terminer par Interactive ou Expect eof. Attendez-vous à ce que eof soit généralement suffisant pour effectuer des tâches automatisées.

Autres paramètres

  • Définir l'attente pour ne jamais expirer, définir le délai d'attente -1

  • Définir l'attente 300 Deuxième délai d'attente, si aucun contenu attendu n'apparaît après plus de 300, quittez le délai d'attente 300

attendez-vous à la syntaxe d'écriture

attendez-vous à utiliser la syntaxe tcl

  • Une commande Tcl se compose de mots séparés par des espaces. Parmi eux, le premier mot est le nom de la commande et les autres sont des paramètres de commande
    cmd arg arg arg

  • .
  • $ représente la valeur d'une variable. Dans cet exemple, le nom de la variable est foo.

    $foo

  • Les crochets exécutent une commande imbriquée. . Par exemple, si vous souhaitez transmettre le résultat d'une commande comme argument à une autre commande, alors vous utilisez la notation

    [cmd arg]

  • guillemets doubles pour marquer le. phrase comme argument de la commande. Le symbole "$" et les crochets sont toujours interprétés entre guillemets doubles

    "quelques trucs"

  • Les accolades marquent également une phrase comme argument de la commande. une commande. Cependant, d'autres symboles sont utilisés dans Les accolades ne sont pas interprétées

    {quelques trucs>

  • Le symbole barre oblique inverse est utilisé pour citer des symboles spéciaux. Par exemple : n représente une nouvelle ligne. . Le symbole barre oblique inverse est également utilisé. Fermez la signification particulière du symbole "$", des guillemets, des crochets et des accolades

  • Exemple

login.exp est dédié à la connexion à distance, utilisation rapide : login.exp "exclude" "${remote_ip}" "${remote_user}" "${remote_passwd}" "${remote_command}"

L'avez-vous appris ? J'espère qu'après avoir lu cet article, vous aurez une compréhension plus approfondie de l'interaction de l'automatisation du shell.

#!/usr/bin/expect -f
##########################################################
# 通过SSH登陆和执行命令
#参数:1.Use_Type [check/execute]
#  2.SSHServerIp
#  3.SSHUser
#  4.SSHPassword
#  5.CommandList [多个命令间以;间隔]
#返回值:
#  0 成功
#  1 参数个数不正确
#  2 SSH 服务器服务没有打开
#  3 SSH 用户密码不正确
#  4 连接SSH服务器超时
##########################################################
proc usage {} {
 regsub ".*/" $::argv0 "" name
 send_user "Usage:\n"
 send_user " $name Use_Type SSHServerIp SSHUser SSHPassword CommandList\n"
 exit 1
} 
## 判断参数个数
if {[llength $argv] != 5} {
 usage
}
#设置变量值
set Use_Type [lindex $argv 0]
set SSHServerIp [lindex $argv 1]
set SSHUser [lindex $argv 2]
set SSHPassword [lindex $argv 3]
set CommandList [lindex $argv 4]
#spawn ping ${SSHServerIp} -w 5
#expect {
# -nocase -re "100% packet loss" {
#  send_error "Ping ${SSHServerIp} is unreachable, Please check the IP address.\n"
#  exit 1
# }
#}
set timeout 360
set resssh 0
#定义变量标记ssh连接时是否输入yes确认
set inputYes 0
set ok_string LOGIN_SUCCESS
if {$Use_Type=="check"} {
 #激活ssh连接,如果要需要输入yes确认,输入yes,设置inputYes为1,否则输入ssh密码
 spawn ssh ${SSHUser}@${SSHServerIp} "echo $ok_string"
} else {   
 spawn ssh ${SSHUser}@${SSHServerIp} "$CommandList"
}
expect {
 -nocase -re "yes/no" {
  send -- "yes\n"
  set inputYes 1
 }
 -nocase -re "assword: " {
  send -- "${SSHPassword}\n"
  set resssh 1
 }
 #-nocase -re "Last login: " { 
 #  send -- "${CommandList}\n"
 #}
 $ok_string {}
 -nocase -re "Connection refused" {
  send_error "SSH services at ${SSHServerIp} is not active.\n"
  exit 2
 }
 timeout {
  send_error "Connect to SSH server ${SSHUser}@${SSHServerIp} timeout(10s).\n"
  exit 4
 }
}
#如果输入了yes确认,输入ssh密码
if {$inputYes==1} {
 expect {
  -nocase -re "assword: " {
   send -- "${SSHPassword}\n"
   set resssh 1
  }
 }
}
#如果出现try again或者password:提示,说明输入的用户密码错误,直接退出。
if {$resssh==1} {
 expect {
  -nocase -re "try again" {
   send_error "SSH user:${SSHUser} passwd error.\n"
   exit 3
  }
  -nocase -re "assword:" {
   send_error "SSH user:${SSHUser} passwd error.\n"
   exit 3
  }
  eof {}
 }
}
send_error -- "$expect_out(buffer)"
#-nocase -re "No such user" {
#  send_error "No such user.\n"
#  exit 5
# }
#exit
Recommandations associées :

Script de fonction d'enregistrement et de lecture de production Linux Shell

Python réalise la fonction simple de remplacement du shell sed

Méthode FTP du shell Linux pour télécharger des fichiers en fonction de la date

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Linux: comment entrer le mode de récupération (et la maintenance)Linux: comment entrer le mode de récupération (et la maintenance)Apr 18, 2025 am 12:05 AM

Les étapes pour entrer le mode de récupération Linux sont: 1. Redémarrez le système et appuyez sur la touche spécifique pour entrer dans le menu GRUB; 2. Sélectionnez l'option avec (RecoveryMode); 3. Sélectionnez l'opération dans le menu Mode de récupération, tel que FSCK ou Root. Le mode de récupération vous permet de démarrer le système en mode utilisateur unique, d'effectuer des vérifications et des réparations du système de fichiers, modifier les fichiers de configuration et d'autres opérations pour aider à résoudre les problèmes système.

Composants essentiels de Linux: expliqués pour les débutantsComposants essentiels de Linux: expliqués pour les débutantsApr 17, 2025 am 12:08 AM

Les composants principaux de Linux incluent le noyau, le système de fichiers, le shell et les outils communs. 1. Le noyau gère les ressources matérielles et fournit des services de base. 2. Le système de fichiers organise et stocke les données. 3. Shell est l'interface permettant aux utilisateurs d'interagir avec le système. 4. Les outils courants aident à effectuer des tâches quotidiennes.

Linux: un regard sur sa structure fondamentaleLinux: un regard sur sa structure fondamentaleApr 16, 2025 am 12:01 AM

La structure de base de Linux comprend le noyau, le système de fichiers et le shell. 1) Ressources matérielles de gestion du noyau et utiliser uname-R pour afficher la version. 2) Le système de fichiers EXT4 prend en charge les fichiers volumineux et les journaux et est créé à l'aide de MKFS.EXT4. 3) Shell fournit une interaction de ligne de commande telle que Bash et répertorie les fichiers à l'aide de LS-L.

Opérations Linux: Administration et maintenance du systèmeOpérations Linux: Administration et maintenance du systèmeApr 15, 2025 am 12:10 AM

Les étapes clés de la gestion et de la maintenance du système Linux incluent: 1) maîtriser les connaissances de base, telles que la structure du système de fichiers et la gestion des utilisateurs; 2) Effectuer la surveillance du système et la gestion des ressources, utilisez le haut, le HTOP et d'autres outils; 3) Utilisez des journaux système pour dépanner, utiliser JournalCTL et d'autres outils; 4) Rédiger des scripts automatisés et la planification des tâches, utilisez des outils CRON; 5) Implémentez la gestion et la protection de la sécurité, configurez les pare-feu via iptables; 6) Effectuer l'optimisation des performances et les meilleures pratiques, ajuster les paramètres du noyau et développer de bonnes habitudes.

Comprendre le mode de maintenance de Linux: l'essentielComprendre le mode de maintenance de Linux: l'essentielApr 14, 2025 am 12:04 AM

Le mode de maintenance Linux est entré en ajoutant init = / bin / bash ou paramètres uniques au démarrage. 1. Entrez le mode de maintenance: modifiez le menu Grub et ajoutez des paramètres de démarrage. 2. Remontez le système de fichiers en mode de lecture et d'écriture: Mount-Oremount, RW /. 3. Réparer le système de fichiers: utilisez la commande fsck, telle que FSCK / DEV / SDA1. 4. Sauvegardez les données et opérez avec prudence pour éviter la perte de données.

Comment Debian améliore la vitesse de traitement des données HadoopComment Debian améliore la vitesse de traitement des données HadoopApr 13, 2025 am 11:54 AM

Cet article examine comment améliorer l'efficacité du traitement des données Hadoop sur les systèmes Debian. Les stratégies d'optimisation couvrent les mises à niveau matérielle, les ajustements des paramètres du système d'exploitation, les modifications de configuration de Hadoop et l'utilisation d'algorithmes et d'outils efficaces. 1. Le renforcement des ressources matérielles garantit que tous les nœuds ont des configurations matérielles cohérentes, en particulier en faisant attention aux performances du CPU, de la mémoire et de l'équipement réseau. Le choix des composants matériels de haute performance est essentiel pour améliorer la vitesse de traitement globale. 2. Réglage des paramètres JVM: Ajustez dans le fichier hadoop-env.sh

Comment apprendre Debian SyslogComment apprendre Debian SyslogApr 13, 2025 am 11:51 AM

Ce guide vous guidera pour apprendre à utiliser Syslog dans Debian Systems. Syslog est un service clé dans les systèmes Linux pour les messages du système de journalisation et du journal d'application. Il aide les administrateurs à surveiller et à analyser l'activité du système pour identifier et résoudre rapidement les problèmes. 1. Connaissance de base de Syslog Les fonctions principales de Syslog comprennent: la collecte et la gestion des messages journaux de manière centralisée; Prise en charge de plusieurs formats de sortie de journal et des emplacements cibles (tels que les fichiers ou les réseaux); Fournir des fonctions de visualisation et de filtrage des journaux en temps réel. 2. Installer et configurer syslog (en utilisant RSYSLOG) Le système Debian utilise RSYSLOG par défaut. Vous pouvez l'installer avec la commande suivante: SudoaptupDatesud

Comment choisir la version Hadoop dans DebianComment choisir la version Hadoop dans DebianApr 13, 2025 am 11:48 AM

Lors du choix d'une version Hadoop adaptée au système Debian, les facteurs clés suivants doivent être pris en compte: 1. Stabilité et support à long terme: pour les utilisateurs qui poursuivent la stabilité et la sécurité, il est recommandé de choisir une version stable Debian, comme Debian11 (Bullseye). Cette version a été entièrement testée et a un cycle de support allant jusqu'à cinq ans, ce qui peut assurer le fonctionnement stable du système. 2. Package Mise à jour: Si vous avez besoin d'utiliser les dernières fonctionnalités et fonctionnalités Hadoop, vous pouvez considérer la version instable de Debian (SID). Cependant, il convient de noter que les versions instables peuvent avoir des problèmes de compatibilité et des risques de stabilité. 3. Soutien et ressources communautaires: Debian a un énorme soutien communautaire, qui peut fournir une documentation riche et

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.