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 返回汉字的汉语拼音
Feb 27 Python
Python语言技巧之三元运算符使用介绍
Mar 04 Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 Python
Python模拟用户登录验证
Sep 11 Python
python负载均衡的简单实现方法
Feb 04 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
python实现任意位置文件分割的实例
Dec 14 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
Python如何输出百分比
Jul 31 Python
多个版本的python共存时使用pip的正确做法
Oct 26 Python
Python+Appium新手教程
Apr 17 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 读取文本文件内容并分页显示
2016/01/02 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
vue项目前端埋点的实现
2019/03/06 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python网页请求urllib2模块简单封装代码
2014/02/07 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
有关Python的22个编程技巧
2018/08/29 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
充分就业社区汇报材料
2014/05/07 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
人与自然的观后感
2015/06/18 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android