python pexpect ssh 远程登录服务器的方法


Posted in Python onFebruary 14, 2019

使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help('pexpect'),查询是否本地含有pexpect模块。

如果没有,linux系统输入 easy_install pexpect便可自动安装。

测试代码,连接127.0.0.1

下面是我手动连接127.0.0.1, 发现只有在首次使用ssh连接127.0.0.1时,需要输入yes or no ,而后再次使用ssh ,则不需要再次输入yes

直接输入密码即可。

python pexpect ssh 远程登录服务器的方法

后续测试代码是二次链接,无需查询是否需要输入yes or no

import pexpect 
def send_command(child, cmd):
  child.sendline(cmd)
  child.expect(PROMT)
  print child.before
def connect(user, host, password):
  ssh_newkey = 'Ary you sure you want to continue connecting'
  connStr = 'ssh ' + user + '@' + host
  child = pexpect.spawn(connStr)
  '''
  ret = child.expect([pexpect.TIMEOUT, ssh_newkey])
  if ret == 0:
    print "[-] Error 1"
    return
  elif ret == 1:
    child.sendline('yes')
  '''
  res = child.expect([pexpect.TIMEOUT, '[P|p]assword:'])
  if res == 0:
    print "[-] Error 2"
    return
  elif res == 1:
    child.sendline(password)
  child.expect(PROMT)
  return child
def main():
  host = '127.0.0.1'#测试主机ip或者主机名
  user = 'root'#测试账号
  password = 'root'#测试密码
  child = connect(user, host, password)
  send_command(child, 'w')
if __name__ == '__main__':
  main()

可以用pxssh模块更简单来完成ssh的连接

from pexpect import pxssh
def send_command(s, cmd):
  s.sendline(cmd)
  s.prompt()
  print s.before
def connect(host, user, password):
  try:
    s = pxssh.pxssh()
    s.login(host, user, password)
    return s
  except:
    print "error"
    exit(0)
def main():
  s = connect('127.0.0.1', 'root', '15110506010')
  send_command(s, 'whoami')
if __name__ == '__main__':
  main()

批量连接肉鸡。

from pexpect import pxssh
botnet = []
class client:
	def __init__(self, user, host, password):
		self.user=user
		self.host=host
		self.password=password
		self.child=self.connect()
	def connect(self):
		try:
			s = pxssh.pxssh()
			s.login(self.host, self.user, self.password)
			return s
		except Exception, e:
			print "Error *" + str(e)
	def send_command(self, cmd):
		self.child.sendline(cmd)
		self.child.prompt()
		return self.child.before
def addclient(user, host, password):
	c = client(user, host, password)
	botnet.append(c)
def botnetcommand(command):
	for c in botnet:
		output = c.send_command(command)
		print "ip: " + str(c.host)
		print output
def main():
	addclient('root', '127.0.0.1', 'toor')
	addclient('root', '****', '*****')
	botnetcommand('pwd')
if __name__=='__main__':
	main()

以上这篇python pexpect ssh 远程登录服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的pass语句使用方法讲解
May 14 Python
Python实现遍历数据库并获取key的值
May 17 Python
Python中创建字典的几种方法总结(推荐)
Apr 27 Python
Python中turtle作图示例
Nov 15 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
Django 实现将图片转为Base64,然后使用json传输
Mar 27 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 Python
Python之时间和日期使用小结
Feb 14 #Python
对Python Pexpect 模块的使用说明详解
Feb 14 #Python
python获取交互式ssh shell的方法
Feb 14 #Python
对python多线程SSH登录并发脚本详解
Feb 14 #Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 #Python
python 实现selenium断言和验证的方法
Feb 13 #Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 #Python
You might like
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
利用js对象弹出一个层
2008/03/26 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python中subprocess的简单使用示例
2015/07/28 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Python中实现输入一个整数的案例
2020/05/03 Python
学校出纳员岗位职责
2014/03/18 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
行政监察建议书
2014/05/19 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
护士求职信
2014/07/05 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
收费员岗位职责
2015/02/14 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL