Python多线程登录远端linux执行操作命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python多线程登录远端linux执行操作命令相关的知识,希望对你有一定的参考价值。


什么是进程?

进程,就是程序的一个运行状态。

 

什么是线程?

为什么要使用线程?

 

线程,是进程内部的“执行单元”。

一个进程,可以包含多个线程,每个线程又可以执行不同的代码。

即,通过多个线程,可以使一个进程同时执行多个功能!


前提安装sshpass

解法1.

#!/usr/bin/python
#-*- coding:utf-8
import threading
import os
def linux_ls1():
        while True:
                cmd="sshpass -p '00000000' ssh [email protected] ls"
                ret=os.popen(cmd)
                print ret.read()
                break
def linux_ls2():
        while True:
                cmd="sshpass -p '00000000' ssh [email protected] ls"
                ret=os.popen(cmd)
                print ret.read()
                break
t1=threading.Thread(target=linux_ls1)
t2=threading.Thread(target=linux_ls2)
t1.start()
t2.start()


解法2.

#!/usr/bin/python
#-*- coding:utf-8
import threading
import os
def linux_ls1(pwd,user,ip):
        while True:
                cmd="sshpass -p '%s' ssh %[email protected]%s ls" %(pwd,user,ip)
                ret=os.popen(cmd)
                print ret.read()
                break
def linux_ls2(pwd,user,ip):
        while True:
                cmd="sshpass -p '%s' ssh %[email protected]%s ls" %(pwd,user,ip)
                ret=os.popen(cmd)
                print ret.read()
                break
t1=threading.Thread(target=linux_ls1,args=("00000000","root","192.168.135.105"))
t2=threading.Thread(target=linux_ls2,args=("00000000","root","192.168.135.108"))
t1.start()
t2.start()


解法3.

#-*- coding:utf-8 -*-
import threading
import os
def my_work(pwd,user,ip):
    while True:
         cmd="sshpass -p '%s' ssh %[email protected]%s ls" %(pwd,user,ip)
         ret=os.popen(cmd)
         print ret.read()
         break
class MyThread(threading.Thread):
        def __init__(self, pwd,user,ip):
                threading.Thread.__init__(self)
                self.pwd=pwd
                self.user=user
                self.ip=ip
        #线程启动后,会执行self.run()方法
        def run(self):
                my_work(self.pwd, self.user, self.ip)
# 创建新线程t1
t1 = MyThread("00000000", "root","192.168.135.105")
t2 = MyThread("00000000", "root","192.168.135.108")
t1.start()    #启动线程
t2.start()
print "线程启动完毕"


解法4.

#!/usr/bin/python  
# encoding=utf-8  
# Filename: put_files_hdfs.py  
# 让多条命令并发执行,如让多条scp,ftp,hdfs上传命令并发执行,提高程序运行效率  
import os
import threading
def execCmd(cmd):
    try:
        os.system(cmd)
    except Exception, e:
        print '%s\t 运行失败,失败原因\r\n%s' % (cmd,e)
if __name__ == '__main__':
    # 需要执行的命令列表  
    cmds = ['sshpass -p "00000000" ssh [email protected] ls','sshpass -p "00000000" ssh [email protected] ls',]
    #线程池  
    threads = []
    for cmd in cmds:
        th = threading.Thread(target=execCmd, args=(cmd,))
        th.start()
        threads.append(th)
    # 等待线程运行完毕  
    for th in threads:
        th.join()


以上是关于Python多线程登录远端linux执行操作命令的主要内容,如果未能解决你的问题,请参考以下文章

Python 批量登录远端多个机器执行命令

linux上的rsync命令详解

Python远程登录Linux操作系统,执行命令创建目录上传及下载文件

Linux下axel多线程下载

终端复用工具 tmux 简单操作记录

多用户登录系统操作流程——Python多线程