赞
踩
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。
这边使用pip的方式进行安装
1.远程控制,输入输出指令获取想要的数据
- import paramiko
-
- ###创建SSH对象
- ssh=paramiko.SSHClient()
-
- ###允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
- ssh.load_system_host_keys()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- time.sleep(1)
-
- ####连接到服务器,hostname为服务器的IP地址,port为端口号,username为用户名,password为密码.
- try:
- ssh.connect(hostname='192.168.20.100', port=22, username='root', password='root', compress=True)
-
- ###这边应用实际案例,做了一个判断来检查是否连接上服务器
- except:
- tkinter.messagebox.showinfo('错误','查看环境是否配置正确!')
-
- ###激活terminal,invoke_shell()函数类似shell终端,可以将执行结果分批次返回
- channel = ssh.invoke_shell()
- command = ""
-
- ###向服务器发送命令
- channel.send(command + 'ls \n')
- time.sleep(1)
-
- ###接收服务器的返回值,并打印输出
- stdout = channel.recv(1024*100000)
- time.sleep(3)
- out_list = stdout.decode().split("\n")
- time.sleep(3)
- print(out_list)
- time.sleep(1)
-
- ###关闭服务器连接
- ssh.close()
返回值为:
###可以按照想要输入的指令来获取相对应的数据,并提取出来数据
2.ftp文件传输
- import paramiko
-
- ###创建SSH对象
- ssh=paramiko.SSHClient()
-
- ###允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
- ssh.load_system_host_keys()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- time.sleep(1)
-
- ####连接到服务器,hostname为服务器的IP地址,port为端口号,username为用户名,password为密码.
- try:
- ssh.connect(hostname='192.168.20.100', port=22, username='root', password='root', compress=True)
-
- ###这边应用实际案例,做了一个判断来检查是否连接上服务器
- except:
- tkinter.messagebox.showinfo('错误','查看环境是否配置正确!')
-
- localdeb = r'machine_etag.bin' #Windows下文件路径(需复制的文件)
- debpath = '/home/user/' #Linux目录
- debname = 'machine_etag.bin' #软件包完整名称
-
- #将本地文件传至Linux中
- sftp = paramiko.SFTPClient.from_transport(ssh)
- sftp.put(localdeb, debpath + debname)
-
- client= paramiko.SSHClient()
- client._transport=ssh
-
- #列出Linux目录中的文件,以便检查是否传送成功
- print('上传完成!' + debpath +' 下有如下文件:')
- lscmd = 'ls -l ' + debpath;
- stdin, stdout, stderr = client.exec_command(lscmd)
- print(stdout.read().decode('utf-8'))
-
- #在Linux上安装deb软件
- print('安装 ' + debpath + debname)
-
- installcmd = 'dpkg -i ' + debpath + debname
- stdin, stdout, stderr = client.exec_command(installcmd)
- print(stdout.read().decode('utf-8'))
-
- #检查Linux系统中软件是否安装成功
- print('安装结果: ')
- stdin, stdout, stderr = client.exec_command('dpkg -s xxx')
- print(stdout.read().decode('utf-8'))
-
- ###关闭连接
- client.close()
返回值:
###这样就能完成windows和Linux文件的互传了
@Neng
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。