当前位置: 首页 > 科技观察

再见Xshell,Xftp!Python执行Linux命令,上传下载远程文件

时间:2023-03-14 00:36:28 科技观察

大家好,我是陈歌,相信大家应该都接触过Linux操作系统(Ubuntu、Centos等),所以需要用到一些远程ssh工具对于你使用的Linux操作系统,尤其是公网服务器。常用的ssh工具主要有:Xshell、MobaXterm、Termius等。上传文件到远程Linux服务器:Xftp、Filezilla等。这些工具有免费的也有收费的。而且价格小贵。今天陈哥就教大家如何使用Python连接远程Linux服务器执行命令和上传文件。这里使用的Python库是Paramiko的核心知识点(亮点):1.Python连接远程Linux服务器2.执行命令并返回结果3.上传文件到远程Linux服务器4.从远程Linux下载文件01Paramiko库1.安装paramiko在开始写代码之前,安装Python库连接Linux服务器。安装命令如下:#1。安装依赖包pipinstallecdsapipinstallCryptopipinstallTwisted#2。安装参数。.2、Paramiko核心组件SSH组件:SSHClient,类似于Linux的ssh命令,用于执行远程命令。SFTP组件:SFTPClient,类似于Linux的sftp命令,用于文件上传、下载、修改文件权限。02SSHClient1、SSHClient常用方法介绍这里陈哥就以自己的远程服务器为例给大家演示一下,首先连接服务器importparamiko#ip,username,passwordip="远程Linux的IP地址"port=22user="root"password="Password"#创建SSHClient实例对象ssh=paramiko.SSHClient()#调用方法,表示不存储远程机器的公钥,允许访问ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接远程机器,地址,端口,用户名和密码ssh.connect(ip,port,user,password,timeout=10)执行linux命令,如:ls#inputlinuxcommandcommand1="ls"ssh.exec_command(command1)#stdout是正确输出,stderr是错误输出stdin,stdout,stderr=ssh.exec_command(command2)#输出命令执行结果result=stdout.read()print(result)xshellreturnresult:Python执行代码结果:2.执行多条Linux命令以上案例只执行了一条Linuxc命令在实际应用中往往需要执行2条或更多的Linux命令。下面演示如何以错误的方式执行多个命令:#Inputlinuxcommandcommand1="cd/www/wwwroot"command2="ls"ssh。exec_command(command1)stdin,stdout,stderr=ssh.exec_command(command2)#输出命令执行结果result=stdout.read()print(result)先执行上面的命令:cd/www/wwwroot,输入wwwroot,然后查看里面的文件夹,下面是在xshell中执行的结果。Python代码执行结果:可以看到结果和之前一样,所以这个方法是错误的(陈歌一开始也是这样做的,这里给大家提个醒)正确的方法:#inputlinuxcommand命令="cd/www/wwwroot;ls"stdin,stdout,stderr=ssh.exec_command(command)#输出命令执行result=stdout.read()##bytesturnstrresult=str(result)result=result.split('\\n')foriinresult:直接使用print(i);只是把多条命令分开,转换成str后,用\\n分割结果,第03SFTPClient1行输出,SFTPClient常用方法介绍对于Linux,先在本地新建一个文本文件:陈兄.txt,输入一些其中的内容连接到Linux服务器#GetTransportinstancetran=paramiko.Transport(('remoteLinuxip',22))#ConnecttoSSHservice在终端上,使用passwordtran.connect(username="username",password='password')#获取SFTP实例sftp=paramiko.SFTPClient.from_transport(tran)上传文件#设置上传的本地/远程文件路径localpath="D://0603/Chenge.txt"remotepath="/www/wwwroot//Chenge.txt"#执行上传动作sftp.put(localpath,remotepath)#关闭连接tran.close()效果如下:3、从Linux服务器下载文件陈大哥新建一个Linux服务器上的文本文件:Pythonresearcher.txt,并写入下载文件的内容localpath2="D:/公众号/0603/Pythonresearcher.txt"remotepath2="/www/wwwroot/Pythonresearchers.txt"#执行下载动作sftp.get(remotepath2,localpath2)#关闭连接tran.close()作用:04总结本文讲解Paramiko库,并讲解ssh和sftp两大组件,设计的核心知识点(亮点):1.Python连接远程Linux服务器2.执行命令并返回结果3.上传文件到远程Linux服务器4.从远程Linux下载文件本文转载自微信公众号“Python研究员”,转载文章可通过以下二维码关注,转载请联系Python研究员公众号。