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的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Django实现图片文字同时提交的方法
May 26 Python
Python 专题三 字符串的基础知识
Mar 19 Python
python脚本替换指定行实现步骤
Jul 11 Python
Python MD5加密实例详解
Aug 02 Python
tensorflow输出权重值和偏差的方法
Feb 10 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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
smtp邮件发送一例
2006/10/09 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
JS 图片缩放效果代码
2010/06/09 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
Python3实现从文件中读取指定行的方法
2015/05/22 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python中格式化format()方法详解
2017/04/01 Python
浅谈对yield的初步理解
2017/05/29 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
PyTorch笔记之scatter()函数的使用
2020/02/12 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
美国智能家居专家:tink
2019/06/04 全球购物
编程输出如下图形
2013/11/24 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
最美家庭活动方案
2014/08/31 职场文书
高中学生自我评价范文
2014/09/23 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
银行先进个人总结
2015/02/15 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技