Pexpect自動インタラクティブシステム
PexpectはDon LibesのExpect言語のPython実装であり、サブルーチンを起動し、正規表現を使用してプログラム出力に特定の応答を行い、それによって自動的に対話するPythonモジュールを実現する.Pexpectの使用範囲は広く、ssh、ftp、telnetなどのプログラムとの自動インタラクションを実現するために使用することができる.ソフトウェアインストールパッケージを自動的にコピーし、異なるマシンで自動的にインストールすることができます.ソフトウェアテストでコマンドラインと対話する自動化を実現するためにも使用できます.
一、Pexpectのインストール
1、pythonパッケージマネージャのインストール
2、pexpectソフトウェアのインストール
3、インストール効果を検証する
二、pexpectリモート管理設備の使用
1、スクリプトの作成
2、実行スクリプト
参考文章:探索Pexpect 1,探索Pexpect 2,python pexpect学習と探索
一、Pexpectのインストール
1、pythonパッケージマネージャのインストール
[root@plinuxos ~]# yum install -y python34-setuptools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* epel: mirrors.ustc.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
......
Installed:
python34-setuptools.noarch 0:19.2-3.el7
Dependency Installed:
python34.x86_64 0:3.4.5-4.el7 python34-libs.x86_64 0:3.4.5-4.el7
Complete!
2、pexpectソフトウェアのインストール
[root@plinuxos ~]# easy_install-3.4 pexpect
Searching for pexpect
Reading https://pypi.python.org/simple/pexpect/
Best match: pexpect 4.2.1
Downloading https://pypi.python.org/packages/e8/13/d0b0599099d6cd23663043a2a0bb7c61e58c6ba359b2656e6fb000ef5b98/pexpect-4.2.1.tar.gz#md5=3694410001a99dff83f0b500a1ca1c95
Processing pexpect-4.2.1.tar.gz
......
Installed /usr/lib/python3.4/site-packages/ptyprocess-0.5.2-py3.4.egg
Finished processing dependencies for pexpect
3、インストール効果を検証する
[root@plinuxos ~]# python3.4
Python 3.4.5 (default, May 29 2017, 15:17:55)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pexpect
>>> dir(pexpect)
['EOF', 'ExceptionPexpect', 'Expecter', 'PY3', 'TIMEOUT', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__revision__', '__spec__', '__version__', 'exceptions', 'expect', 'is_executable_file', 'pty_spawn', 'run', 'runu', 'searcher_re', 'searcher_string', 'spawn', 'spawnbase', 'spawnu', 'split_command_line', 'sys', 'utils', 'which']
>>> print(pexpect.run('w'))
b' 14:27:41 up 67 days, 1:12, 2 users, load average: 0.00, 0.01, 0.05\r
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\r
root tty1 23Sep17 38days 0.02s 0.02s -bash\r
root pts/0 103.20.249.250 13:55 5.00s 0.14s 0.09s python3.4\r
'
二、pexpectリモート管理設備の使用
1、スクリプトの作成
[root@plinuxos tmp]# cat pexpectest.py
import pexpect
import sys
ssh=pexpect.spawn('/usr/bin/ssh [email protected].***.***')
ssh.expect('password:')
ssh.sendline("123456")
ssh.expect('#')
ssh.sendline("echo 'this is a test'>> /tmp/1.txt")
print(ssh.before) # Print the result of the ls command.
ssh.interact() # Give control of the ssh to the user.
2、実行スクリプト
[root@plinuxos tmp]# python3.4 pexpectest.py
b' \r
'
#####################################################################
# Notice #
# #
# 1. Please DO NOT upgrade the kernel, as the kernel upgrade would #
# damage the original operating system. #
# #
# 2. Please create unique passwords that use a combination of words,#
# numbers, symbols, and both upper-case and lower-case letters. #
# Avoid using simple adjacent keyboard combinations such as #
# "Qwert!234","Qaz2wsx",etc. #
# #
# 3. Unless necessary, please DO NOT open or use high-risk ports, #
# such as Telnet-23, FTP-20/21, NTP-123(UDP), RDP-3389, #
# SSH/SFTP-22, Mysql-3306, SQL-1433,etc. #
# #
# #
# Any questions please contact 4000-955-988 #
######################################################################
[root@pos ~]# echo 'this is a test'>> /tmp/1.txt
[root@pos ~]#
##
[root@pos ~]# cat /tmp/1.txt
this is a test
[root@pos ~]# logout
Connection to 122.112.***.*** closed.
参考文章:探索Pexpect 1,探索Pexpect 2,python pexpect学習と探索