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模块顶层运行的代码引起的一个Bug
Jul 04 Python
Python实现网站文件的全备份和差异备份
Nov 30 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
python实现在windows下操作word的方法
Apr 28 Python
Python实现选择排序
Jun 04 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
Python3之不使用第三方变量,实现交换两个变量的值
Jun 26 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 Python
Python实现简单的猜单词
Jun 15 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缓存技术的多种方法小结
2012/08/14 PHP
PHP文件操作详解
2016/12/30 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python实现发送email的几种常用方法
2014/08/18 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
Python接收手机短信的代码整理
2020/08/02 Python
python中最小二乘法详细讲解
2021/02/19 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
美国购车网站:TrueCar
2016/10/19 全球购物
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
消防先进事迹材料
2014/02/10 职场文书
开工典礼策划方案
2014/05/23 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS