2-python库之-Paramiko远程控

在做自动化操作的时候,经常会先要到机器里面看一些设备信息,运行脚本等,这时候ssh远程登陆工具的好处就可想而知,paramiko库提供了,ssh远程登陆接口,不仅可以执行shell命令,而且可以上传下载文件等。

由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto

使用linux登录别的ssh

ssh [email protected]

指定端口

ssh [email protected] -p 2222

1.登陆执行shell命令

直接查看例子:

创建实例,使用connect连接,使用exec_command执行命令,使用stdout.read读取返回的结果。

import paramiko


if __name__ == '__main__':
    # 实例化SSHClient
    client = paramiko.SSHClient()

    # 自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        client.connect(hostname="192.168.62.128", port=22, username="python", password="admin")
    except Exception as e:
        print("---异常---:", e)

    if client:
        # 打开一个Channel并执行命令
        command = "ps -aux | grep test"
        stdin, stdout, stderr = client.exec_command(command)  # stdout 为正确输出,stderr为错误输出,同时是有1个变量有值

        # 打印执行结果
        command_result = stdout.read().decode('utf-8')
        print("1111", command_result)

        # 关闭SSHClient
        client.close()

2.上传、下载文件

ubuntu上面安装ftp服务器作为ftp测试服务器

1.安装
sudo apt-get install vsftpd
2.配置

sudo vim /etc/vsftpd.conf

打开写

write_enable=YES

最后加上ftp服务器的位置

# 配置ftp服务器的上传下载文件所在的目录。
local_root=/home/python/ftpfile

创建ftpfile文件夹,并且创建一个get_file文件

3.重启
sudo service vsftpd restart
4.测试

python本地放一个put_file文件,用来上传到服务器。
ubuntu服务器放一个get_file文件,用来下载到本地。

代码如下:

import paramiko


if __name__ == '__main__':
    # 获取Transport实例
    tran = paramiko.Transport(('192.168.62.128', 22))

    # 连接SSH服务端,使用password
    tran.connect(username="python", password='123456')

    # 获取SFTP实例
    sftp = paramiko.SFTPClient.from_transport(tran)

    # 执行上传动作
    sftp.put("./put_file", "/home/python/ftpfile/put_file")

    # 执行下载动作
    sftp.get("/home/python/ftpfile/get_file", "./get_file")

    tran.close()

可以看到服务器多了一个put_file文件,本地多了一个get_file文件

3.扩展:http文件服务器

正常情况我们一般用文件服务器进行下载文件,不会使用ftp的方式下载,

ubuntu里面安装apache

sudo apt-get install apache2

配置文件在/etc/apache2/apache2.conf里面,如果有修改的话,使用service apache2 restart进行重启。

将文件放在/var/www/html下面,或者做一个软连接ln -s /home/nn/package/ file在/var/www/html/

python使用wget下载

import wget

url = 'http://192.168.62.128/test'
filename = wget.download(url)

参考:https://www.cnblogs.com/xiao-apple36/p/9144092.html

发布了106 篇原创文章 · 获赞 76 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/Creator_Ly/article/details/104395113