精华内容
下载资源
问答
  • python pexpect ssh 远程登录服务器

    千次阅读 2017-06-05 15:48:25
    使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help('pexpect'),查询是否本地含有pexpect模块。 如果没有,linux系统输入 easy_install pexpect便可自动安装。 测试代码,连接...

    使用了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 

    直接输入密码即可。



    后续测试代码是二次链接,无需查询是否需要输入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模块,在测试代码之前,可输入python进入交互界面,输入help(‘pexpect’),查询是否本地含有pexpect模块。 如果没有,linux系统输入 easy_install pexpect便可自动安装。 测试代码,连接...
  • python 中用 paramiko 建立ssh 远程交互命令登录,并开启多channel 1、ssh 登录: 2、输入多条指令: 3、多channel: 欢迎在这里插入代码片使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的...

    python 中用 paramiko 建立ssh 远程交互命令登录,并开启多channel

    1、ssh 登录:

    2、输入多条指令:

    3、多channel:

    展开全文
  • python ssh批量登录 自动交互

    千次阅读 2017-12-11 01:07:06
    pythonssh远程登录,如果用os.system('commod'),结果就是人机互动,跟不用也没啥区别。 百度发现,可以用pexpect模块来实现自动交互。 # import os #os.system('ping localhost') #import subprocess import ...

    用python来ssh远程登录,如果用os.system('commod'),结果就是人机互动,跟不用也没啥区别。

    百度发现,可以用pexpect模块来实现自动交互。

    # python3
    import pexpect
    
    def ssh_cmd(ip, passwd):
        #a = os.system('ssh ' +s)
        ssh = pexpect.spawn('ssh root@%s'%ip)
        try:
            i = ssh.expect(['password:','continue connecting (yes/no)?'], timeout=2)
            if i ==0:
                ssh.sendline(passwd)
            elif i ==1:
                ssh.sendline('yes\n')
                ssh.expect('password: ')
                ssh.sendline(passwd)
            ret = 0
        except pexpect.EOF:
            print ("EOF")
            ssh.close()
            ret = -1
        except pexpect.TIMEOUT:
            print ("TIMEOUT")
            ssh.close()
            ret = -2
        return ret
    
    #ssh 192.168.9.2-192.168.0.10的9台机器
    for i in range(2,11):
        ip = '192.168.0.'+str(i)
        passwd = 'password'#密码
        num= ssh_cmd(ip,passwd)
        print (num)
    
    pexpect文档https://pexpect.readthedocs.io/en/stable/api/pexpect.html
    参考链接:http://www.cnblogs.com/ma6174/archive/2012/05/25/2508378.html(python3有点问题,ssh.read()会报出错)



    展开全文
  • 背景:最近因为工作需求在写自动化测试脚本,主要目的是测试代码功能的完整性,然而在使用SSHLibrary库进行远程SSH交互的时候总是出现问题,比如说遇到需要输入密码的交互,总是不能成功,还有遇到一直保持运行并...

    背景:

    最近因为工作需求在写自动化测试脚本,主要目的是测试代码功能的完整性,然而在使用SSHLibrary库进行远程SSH交互的时候总是出现问题,比如说遇到需要输入密码的交互,总是不能成功,还有遇到一直保持运行并实时输出的命令,也无法读取其中的输出。所以就只能使用python实现脚本进行交互,和SSH解耦合。

    使用的库subprocess和argparse;

    代码1:由于命令行执行之后,进程一直在运行,不停的出块,所以我将出块的内容写入到文件中。

    import subprocess

    import sys

    import argparse

    class TimeoutError(Exception):

    pass

    def excuteCmd(cmd):

    popen = subprocess.Popen(cmd,stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell = True)

    while True:

    buff = popen.stdout.readline()

    fh = open("/home/ubuntu/bottos/bottos.txt", "a+")

    fh.write(buff)

    sys.stdout.write(buff)

    if buff == "" and popen.poll() != None:

    break

    if __name__ == "__main__":

    """ self test """

    parser = argparse.ArgumentParser(description="manual to this script")

    parser.add_argument("--delegate", type=str,default=None)

    args = parser.parse_args()

    try:

    bottos = "/home/ubuntu/bottos/bottos "

    cmd = bottos + "--delegate " + args.delegate + " --enable-wallet"

    ret = excuteCmd(cmd)

    print ret

    except TimeoutError, e:

    print repr(e)

    代码2:实现输入密码的功能

    import subprocess

    import argparse

    class TimeoutError(Exception):

    pass

    def excuteCmd(cmd, passwd, timeout = 1):

    s = subprocess.Popen(cmd,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell = True)

    s.stdin.write(passwd+" ")

    out, err = s.communicate()

    if err is not None:

    return err

    return out

    if __name__ == "__main__":

    """ self test """

    parser = argparse.ArgumentParser(description="manual to this script")

    parser.add_argument("--name", type=str,default=None)

    parser.add_argument("--passwd", type=str,default=None)

    args = parser.parse_args()

    try:

    unlock = "/home/ubuntu/bottos/bcli wallet unlock "

    cmd = unlock + "--account " + args.name

    ret = excuteCmd(cmd,args.passwd,5)

    print ret

    except TimeoutError, e:

    print repr(e)

    临时解救用的脚本,有几个问题

    在使用popen.stdout.read()读取不出来内容,只能使用popen.stdout.readline()

    在使用stdout.read()和stdin.write() communicate()不能同时使用,原因可能是需要用stdout.readline(),不过我没有尝试。

    展开全文
  • python实现命令行交互

    千次阅读 2018-11-01 17:11:08
    最近因为工作需求在写自动化测试脚本,主要目的是测试代码功能的完整性,然而在使用SSHLibrary库进行远程SSH交互的时候总是出现问题,比如说遇到需要输入密码的交互,总是不能成功,还有遇到一直保持运行并实时输出...
  • 堡垒机pythonssh的使用 【堡垒机更多参考】http://www.cnblogs.com/alex3714/articles/5286889.html 【paramiko的Demo实例】https://github.com/paramiko/paramiko Win7下paramiko的Demo远程登录执行交互命令: ...
  • python ssh登录

    千次阅读 2019-03-18 17:37:07
    paramiko基于python 实现的SSH远程安全连接, 用于ssh远程执行命令,文件传输等功能的ssh客户端模块。 pexpect 兼容性较差 pip install pexpect Successfully installed pexpect-4.6.0 ptyp...
  • Python远程部署利器Fabric详解 Fabric是一个Python的库,它提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化、流水化地执行Shell命令。因此它非常适合用来做应用的远程部署及系统维护。其上手也极其...
  • Python批量管理主机(paramiko、fabric与pexpect) 参考:http://blog.51cto.com/lizhenliang/1880856 引用上链接的原文 paramiko:方便嵌套系统平台中,擅长...pexpect:擅长自动交互,比如ssh、ftp、telnet。(...
  • Python 远程部署 Fabric

    2017-06-21 21:03:00
    Fabric是一个Python的库,它提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化、流水化地执行Shell命令。因此它非常适合用来做应用的远程部署及系统维护。其上手也极其简单,你需要的只是懂得基本的...
  • 模块:pexpect ...#实现交互pexpect模块 #先要安装软件包pexpect #-*-coding:utf-8 -*- #实现远程登录 def ssh(): import pexpect,sys child = pexpect.spawn("/usr/bin/sh -c 'ssh -p 22 root@192.1...
  • 使用loom,您可以通过SSH运行命令以及从远程服务器获取文件和从中获取文件。 有关文档,请检查 。 要获得支持,请访问。 待办事项 例子 在Run()中,使用管道而不是CombinedOutput,以便我们可以以更具交互性的...
  • Fabric是Python的一个模块,基于SSH提供了丰富的交互接口,可以用来在本地或远程机器上自动化的执行Shell命令,非常适合用来做应用的远程部署及系统维护。 fabric底层基于paramiko(paramiko是用于ssh连接的库)。...
  • 这几天一直在想办法通过ssh方法通过自己工作的windows端去访问控制远程的Linux服务端,为后期的服务器自动化做准备。这几天几乎把能想到的知识点全都百度了一遍,不会google(比较菜),但没有找到自己想要的方式,...
  • Fabric是Python的一个模块,基于SSH提供了丰富的交互接口,可以用来在本地或远程机器上自动化的执行Shell命令,非常适合用来做应用的远程部署及系统维护。 fabric底层基于paramiko(paramiko是用于ssh连接的库)。 ...
  • Python中操控ssh和sftp

    2015-08-04 15:10:40
    Python中操控ssh和sftp1 Reply在Python(其实任何语言都是)中操控ssh执行远程命令是一个很麻烦的事情……首先要突破ssh密码的非交互模式,我之前一直用sshpass拼接各种复杂的字符串。然后是之后的执行命令只能执行一...
  • 还有基于ssh2的方式,这种方式是基于免密配置的,不需要输入密码就能连接的,但是通常情况下是需要与shell交互输入yes与密码才能连接的。 上述两个问题是我在实例过程中出现的,可能有人成功了,有人与我有一样的...
  • 通过python代码来实现类似expect shell的交互式能力,这样在python代码中能结合业务逻辑组装代码,具有比expect更强大的自动化处理能力。 如果能通过该交互能力,结合SFTP来实现文件相关的操作,那就更加的强大了。 ...
  • 通过使用paramiko模块,可以在Python代码中直接使用SSH协议,对远程服务器进行操作、类似于通过Linux命令ssh远程服务器进行操作。 由于paramiko属于Python第三方库,在使用之前需通过pip安装: pip i...
  • paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令、文件传输等功能。 默认python没有,需要手动安装:pip install paramiko 如安装失败,可以尝试yum安装:yum install python-paramiko ...
  • ssh -Y USER@REMOTE eog IMG 2)也可以在远程简单临时架个服务器, python2 -m SimpleHTTPServer 本地浏览器地址输入 服务器IP:8000 也可以看到图   2、tmux操作  tmux安装 sudo apt install tmux fonts-...
  • ssh-subprocess是一个小的Python模块,提供进程的API,用于通过SSH远程执行命令。 该模块依赖于OpenSSH的SSH功能,并且需要非交互式(例如,公钥)身份验证。 该模块还支持SCP文件传输,以上传和下载文件和目录。 ...
  • 文章目录知识准备什么是Pexpect ?pexpect的核心类和函数...**Pexpect 用来实现与 ssh、ftp 、telnet 等程序的自动交互。**是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 136
精华内容 54
关键字:

python远程ssh交互

python 订阅