在写程序前可以先手动熟悉简单的流程,具体看博客:https://blog.youkuaiyun.com/longkousong/article/details/102692767
python使用ssh和sftp服务,需要安装paramiko模块。
在命令行输入如下命令进行安装,安装若出错,根据对应的错误信息进行百度查找解决办法。
sudo apt install python-pip
sudo apt install python3-pip
pip install --upgrade --user pip
pip3 install --upgrade --user pip
pip install --user paramiko
pip3 install --user paramiko
1.实现ssh的登录
程序功能,登录并查看磁盘空间占用情况。
#!/usr/bin/python3
import os
import sys
import paramiko
class TestSSH:
def __init__(self, ip, username, password):
"""
构造函数
:param ip: 远程主机的IP
:param username: 远程主机的用户名
:param password: 远程主机的密码
"""
self.ssh_client = paramiko.SSHClient()
self.ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh_client.connect(ip, 22, username, password)
def run(self):
"""
运行程序
:return:
"""
self.handle()
def handle(self):
"""
操作指令
:return:
"""
self.cmd("df -h")
def cmd(self, command):
"""
:param cmd_str:
:type cmd_str: str
:return:
"""
std_in, std_out, std_err = self.ssh_client.exec_command(command)
print(std_out.read())
print(command)
if __name__ == '__main__':
'''
通过ssh登录
传入参数
1.ip
2.远程用户名
3.远程密码
'''
ip = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
testSSH = TestSSH(ip, username, password)
testSSH.run()
2.实现sftp上传文件
程序功能,将本机home目录下的hello.txt文件上传到远程tmp目录下。
#!/usr/bin/python3
import os
import sys
import paramiko
class TestSFTP:
def __init__(self, ip, username, password):
"""
构造函数
:param ip: 远程主机的IP
:param username: 远程主机的用户名
:param password: 远程主机的密码
"""
self.__local_file_path = os.environ['HOME'] + "hello.txt"
self.__sftp_file_path = "/tmp/hello.txt"
def run(self):
"""
运行程序
:return:
"""
self.upload()
def upload(self):
"""
上传文件
:return:
"""
transport = paramiko.Transport(ip, 22)
transport.connect(username=username, password=password)
self.__sftp = paramiko.SFTPClient.from_transport(transport)
print('sftp传输已建立')
self.__sftp.put(self.__local_file_path, self.__sftp_file_path)
print('更新成功')
transport.close()
if __name__ == '__main__':
'''
通过sftp传输文件
传入参数
1.ip
2.远程用户名
3.远程密码
'''
ip = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
testSFTP = TestSFTP(ip, username, password)
testSFTP.run()