欢迎访问宙启技术站
智能推送

Python脚本实现SCP远程执行命令操作

发布时间:2024-01-09 21:49:45

SCP是一种用于在本地和远程服务器之间进行文件传输的协议,它可以在传输过程中使用SSH进行加密,确保数据的安全性。在Python中,可以使用paramiko库来实现SCP远程执行命令操作。

首先,需要先安装paramiko库:

pip install paramiko

下面是一个示例代码,使用SCP远程执行命令操作:

import paramiko

def scp_exec_command(hostname, port, username, password, local_file, remote_file, command):
    # 创建SSH客户端
    ssh = paramiko.SSHClient()
    # 自动添加远程服务器的主机密钥
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接远程服务器
    ssh.connect(hostname, port, username, password)
    
    try:
        with paramiko.Transport((hostname, port)) as transport:
            transport.connect(username=username, password=password)
            # 创建SCP客户端
            sftp = paramiko.SFTPClient.from_transport(transport)
            # 上传本地文件到远程服务器
            sftp.put(local_file, remote_file)
        
        # 执行远程命令
        stdin, stdout, stderr = ssh.exec_command(command)
        
        # 输出执行结果
        print(stdout.read().decode('utf-8'))
    finally:
        # 关闭SSH连接
        ssh.close()

# 示例:上传本地文件到远程服务器,并在远程服务器上执行命令
scp_exec_command('hostname', 22, 'username', 'password', 'local_file.txt', '/tmp/remote_file.txt', 'ls /tmp')

在上面的示例中,scp_exec_command函数接收远程服务器的主机名、端口号、用户名、密码,以及本地文件路径、远程文件路径和要执行的命令作为参数。

首先,创建一个SSH客户端,设置远程服务器的主机密钥,然后连接到远程服务器。

try块中,创建一个SCP客户端,使用put方法将本地文件上传到远程服务器。

接下来,使用exec_command方法执行远程命令,并将执行结果保存在stdinstdoutstderr变量中。

最后,输出执行结果,并在finally块中关闭SSH连接。

通过调用scp_exec_command函数,可以实现将本地文件上传到远程服务器,并在远程服务器上执行命令的操作。

需要注意的是,远程服务器需要安装openssh-server和scp服务,并且Python脚本需要在本地运行。