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的装饰器模式与面向切面编程详解
Jun 21 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
Jul 09 Python
python3安装speech语音模块的方法
Dec 24 Python
WxPython建立批量录入框窗口
Feb 27 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
django admin组件使用方法详解
Jul 19 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
在django中自定义字段Field详解
Dec 03 Python
python turtle 绘制太极图的实例
Dec 18 Python
Python根据字典的值查询出对应的键的方法
Sep 30 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
如何给phpadmin一个保护
2006/10/09 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
php curl选项列表(超详细)
2013/07/01 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
python异常和文件处理机制详解
2016/07/19 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Python中new方法的详解
2019/01/15 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
JAVA软件工程师测试题
2014/07/25 面试题
2014年国庆标语
2014/06/30 职场文书
校本教研活动总结
2014/07/01 职场文书
教师个人学习总结
2015/02/11 职场文书
关爱空巢老人感想
2015/08/11 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python