ubuntu python ssh sftp程序实现

本文详细介绍如何使用Python的paramiko模块实现SSH登录并检查远程服务器的磁盘空间占用情况,以及通过SFTP协议上传本地文件到远程服务器的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写程序前可以先手动熟悉简单的流程,具体看博客: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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值