python paramiko远程执行命令打开窗口_使用Paramiko远程执行python脚本

python脚本执行需要依赖python环境、使用的第三方库以及其他一些第三方工具。

可以使用pyinstaller将python脚本打包成exe可执行文件

但如果脚本还要依赖其他一些软件,比如git,等,

因此可以使用远程执行,在远程执行机安装好执行脚本需要的所有环境,软件、依赖库等

然后本地只需要安装paramiko库,在远程机器执行python脚本,并下载生成文件等操作

远程执行python文件,并下载执行结果

class Ssh():

def __init__(self, work_dir='home', host='192.168.0.106', port=22, username='root', pwd='123456'):

self.host = host

self.port = port

self.username = username

self.pwd = pwd

self.__transport = None

self.work_dir = work_dir

self.sftp = None

self.tmpdir = 'tmp'

self.py_file = 'run_remote.py'

def connect(self):

transport = paramiko.Transport((self.host, self.port))

transport.connect(username=self.username, password=self.pwd)

self.__transport = transport

def mkdir(self):

sftp = paramiko.SFTPClient.from_transport(self.__transport)

if not os.path.exists(os.path.join(self.work_dir, self.tmpdir)):

sftp.mkdir(self.work_dir)

sftp.chdir(self.work_dir)

self.sftp = sftp

def upload(self, filename):

sftp = paramiko.SFTPClient.from_transport(self.__transport)

# 本地文件上传至工作目录

sftp.put(filename, os.path.join(self.work_dir, os.path.basename(filename)))

def down(self, *filename):

sftp = paramiko.SFTPClient.from_transport(self.__transport)

# 下载工作目录文件到当前文件夹

for file in filename:

sftp.get(os.path.join(self.work_dir, file), filename)

def cmd(self, command):

ssh = paramiko.SSHClient()

ssh._transport = self.__transport

stdin, stdout, stderr = ssh.exec_command(command)

result = stdout.read()

if result:

print("Result:", result)

if stderr:

print("Error:", stderr)

return result

def close(self):

self.__transport.close()

self.sftp.remove(self.work_dir) # 执行完后删除临时文件夹

def run(self):

self.connect()

self.mkdir()

self.upload(self.py_file)

self.cmd('python run_remote.py')

# files=['result.html','err.log']

# self.down(*files)

self.close()

if __name__ == '__main__':

obj = Ssh()

obj.run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值