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 IDLE加上自动补全和历史功能
Nov 30 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python 查看文件的读写权限方法
Jan 23 Python
python list是否包含另一个list所有元素的实例
May 04 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
简单谈谈python基本数据类型
Sep 26 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
Python中顺序表原理与实现方法详解
Dec 03 Python
Python求凸包及多边形面积教程
Apr 12 Python
Django模型验证器介绍与源码分析
Sep 08 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 Python
Python面向对象之内置函数相关知识总结
Jun 24 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无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
javascript的函数作用域
2014/11/12 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
javascript基础知识
2016/06/07 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
Python3搜索及替换文件中文本的方法
2015/05/22 Python
python中的代码编码格式转换问题
2015/06/10 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Python读取stdin方法实例
2019/05/24 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
了解一下python内建模块collections
2020/09/07 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
项目总经理岗位职责
2014/02/14 职场文书
建议书怎么写
2014/03/12 职场文书
档案工作汇报材料
2014/08/21 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
终止劳动合同协议书
2014/10/05 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
Java常用函数式接口总结
2021/06/29 Java/Android
Python数组变形的几种实现方法
2022/05/30 Python