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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
Python中的ceil()方法使用教程
May 14 Python
使用Python进行目录的对比方法
Nov 01 Python
python pandas时序处理相关功能详解
Jul 03 Python
Python 下载及安装详细步骤
Nov 04 Python
wxpython绘制音频效果
Nov 18 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Python网页解析器使用实例详解
May 30 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
运行Python编写的程序方法实例
Oct 21 Python
python基于openpyxl生成excel文件
Dec 23 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编写PDF文档生成器
2006/10/09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
php模拟post提交数据的方法
2015/02/12 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
从0开始学Vue
2016/10/27 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
python中format()函数的简单使用教程
2018/03/14 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Python初学者常见错误详解
2019/07/02 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
python 19个值得学习的编程技巧
2020/08/15 Python
小学生倡议书范文
2014/05/13 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
集中采购方案
2014/06/10 职场文书
毕业证委托书范文
2014/09/26 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript