Maison >développement back-end >Tutoriel Python >L'installation de Python utilise le module interactif en ligne de commande pexpect
Pexpect est un module Python pur qui peut être utilisé pour interagir avec des commandes de ligne de commande telles que ssh, ftp, passwd, telnet, etc. Il est particulièrement facile à utiliser sous les systèmes Linux. Examinons de plus près la ligne de commande. pour l'installation de Python. Tutoriel de base pour le module interactif pexpect :
1. Installation
1. Installez l'outil easy_install
wget http://peak.telecommunity.com/dist/ez_setup.pypython ez_setup.py installe l'outil easy_install (ce script ira automatiquement sur le site officiel pour rechercher, télécharger et installer)
python ez_setup.py -U setuptoolsMettez à niveau l'outil easy_install
2. Installez pexpect
easy_install Pexpect
Testez-le :
[root@OMS python]# python Python 2.7.3rc1 (default, Nov 7 2012, 15:03:45) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pexpect >>> import pxssh >>>ok L'installation est terminée.
2. Utilisation de baseFonction 1.run()
La fonction run est relativement simple et ne peut réaliser que des interactions simples
Copier le code Le code est le suivant :
run exécute la commande et renvoie le résultat, similaire à os.system
Exemple :
pexpect.run('ls -la') # 返回值(输出,退出状态) (command_output, exitstatus) = pexpect.run('ls -l /bin', withexitstatus=1)
2. est plus puissant que run et peut être implémenté Interactions plus complexes
class spawn __init__(self, command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None)timeout spécifie la valeur du délai d'attente pour l'interaction
; maxread définit la taille du tampon de lecture. Chaque fois que pexpect essaie de démarrer à partir du nombre maximum d'octets lus à partir de TTY (terminal Teletype);
searchwindowsize spécifie la position de correspondance de modèle à partir du tampon d'entrée, et la valeur par défaut est de correspond depuis le début ; le paramètre
Processus de travail :
# 第一步与终端建立连接 child = pexpect.spawn('scp foo user@example.com:.') # 第二步等待终端返回特定内容 child.expect('Password:') # 第三步根据返回内容发送命令进行交互 child.sendline(mypassword)
Classe 3.pxssh
pxssh est une classe dérivée de pexpect . Utilisé pour établir des connexions ssh, plus facile à utiliser que pexpect.
login() établit une connexion ssh à la machine cible ; logout() libère la connexion ;
Écrivez un script pour envoyer des commandes au serveur distant et renvoyer les résultats. Contenu du script :
#!/usr/bin/python #2013-01-16 by larry import pexpect def login(port,user,passwd,ip,command): child=pexpect.spawn('ssh -p%s %s@%s "%s"' %(port,user,ip,command)) o='' try: i=child.expect(['[Pp]assword:','continue connecting (yes/no)?']) if i == 0: child.sendline(passwd) elif i == 1: child.sendline('yes') else: pass except pexpect.EOF: child.close() else: o=child.read() child.expect(pexpect.EOF) child.close() return o hosts=file('hosts.list','r') for line in hosts.readlines(): host=line.strip("\n") if host: ip,port,user,passwd,commands= host.split(":") for command in commands.split(","): print "+++++++++++++++ %s run:%s ++++++++++++" % (ip,command), print login(port,user,passwd,ip,command) hosts.close()Utilisation :
python scripts.pyLe contenu du fichier host.list est le suivant :
192.168.0.21:22999:root:123456:cat /etc/redhat-release,df -Th,whoami 192.168.0.21:22999:root:123456:cat /etc/redhat-release,df -Th,whoamiRésultat renvoyé :
+++++++++++++++ 192.168.0.21 run:cat /etc/redhat-release ++++++++++++ Red Hat Enterprise Linux Server release 4 +++++++++++++++ 192.168.0.21 run:df -Th ++++++++++++ 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/cciss/c0d0p6 ext3 5.9G 4.4G 1.2G 80% / /dev/cciss/c0d0p7 ext3 426G 362G 43G 90% /opt /dev/cciss/c0d0p5 ext3 5.9G 540M 5.0G 10% /var /dev/cciss/c0d0p3 ext3 5.9G 4.1G 1.5G 74% /usr /dev/cciss/c0d0p1 ext3 487M 17M 445M 4% /boot tmpfs tmpfs 4.0G 0 4.0G 0% /dev/shm +++++++++++++++ 192.168.0.21 run:whoami ++++++++++++ root
Pour plus d'articles liés à l'installation de Python et à l'utilisation du module interactif en ligne de commande pexpect, veuillez faire attention au site Web PHP chinois !