【初体验】pexpect与ssh交互(续)

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-10-21


接上篇

Pexpect与SSH交互#

…………………………………………………………………………

[玫瑰]代码

import pexpect

#SSH连接成功时的命令行交互窗口中前面的提示字符的集合
PROMPT = ['# ','>>> ','> ','\$ ']
def send_command(child,cmd):
#发送一条命令
child.sendline(cmd)
#期望有命令行提示字符出现
child.expect(PROMPT)
#将之前的内容都输出
print child.before
def connect(user,host,password):
#表示主机已使用一个新的公钥的消息
ssh_newkey = 'Are you sure you want to continue connecting'
connStr = 'ssh ' + user + '@' + host
#为ssh命令生成一个spawn类的对象
child = pexpect.spawn(connStr)
#期望有ssh_newkey字符、提示输入密码的字符出现,否则超时
ret = child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword: '])
#匹配到超时TIMEOUT
if ret == 0:
print '[-] Error Connecting'
return
#匹配到ssh_newkey
if ret == 1:
#发送yes回应ssh_newkey并期望提示输入密码的字符出现
child.sendline('yes')
ret = child.expect([pexpect.TIMEOUT,'[P|p]assword: '])
#匹配到超时TIMEOUT
if ret == 0:
print '[-] Error Connecting'
return
#发送密码
child.sendline(password)
child.expect(PROMPT)
return child
def main():
host='192.168.1.16' #靶机IP
user='msfadmin'
password='msfadmin'
child=connect(user,host,password)
send_command(child,'uname -a') #命令
if __name__ == '__main__':
main()

教程搬砖于网络,侵权立删[玫瑰]

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    42

  • 帖子

    117

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.3443s Mem:2461Kb