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

Python中使用pxssh()库实现远程服务器管理的脚本示例

发布时间:2023-12-25 06:23:59

使用Python的pxssh库可以实现远程服务器的管理,例如可以通过Python脚本远程登录服务器、执行命令、上传下载文件等操作。下面是一个使用pxssh库的远程服务器管理脚本示例:

from pexpect import pxssh

# 定义远程服务器连接函数
def ssh_login(hostname, username, password):
    try:
        # 创建pxssh对象
        ssh = pxssh.pxssh()

        # 连接远程服务器
        ssh.login(hostname, username, password)

        # 返回pxssh对象
        return ssh

    except Exception as e:
        print('Failed to login to {}: {}'.format(hostname, str(e)))
        return None

# 定义执行命令的函数
def execute_command(ssh, command):
    ssh.sendline(command)
    ssh.prompt()
    result = ssh.before.decode()
    return result

# 定义上传文件的函数
def upload_file(ssh, local_path, remote_path):
    ssh.sendline('scp {} {}:{}'.format(local_path, ssh.cwd(), remote_path))
    ssh.prompt(timeout=600)  # 等待上传完成
    result = ssh.before.decode()
    return result

# 定义下载文件的函数
def download_file(ssh, remote_path, local_path):
    ssh.sendline('scp {}:{} {}'.format(ssh.cwd(), remote_path, local_path))
    ssh.prompt(timeout=600)  # 等待下载完成
    result = ssh.before.decode()
    return result

# 主函数
def main():
    # 远程服务器信息
    hostname = 'example.com'
    username = 'username'
    password = 'password'

    # 登录远程服务器
    ssh = ssh_login(hostname, username, password)
    if ssh is None:
        print('Failed to login to the remote server')
        return

    # 执行命令
    result = execute_command(ssh, 'ls')
    print('Command Result:')
    print(result)

    # 上传文件
    result = upload_file(ssh, 'local_file.txt', 'remote_file.txt')
    print('Upload Result:')
    print(result)

    # 下载文件
    result = download_file(ssh, 'remote_file.txt', 'local_file.txt')
    print('Download Result:')
    print(result)

    # 断开远程服务器连接
    ssh.logout()

if __name__ == '__main__':
    main()

在上面的示例代码中,首先定义了一个ssh_login()函数用于登录远程服务器,通过pxsshlogin()方法来实现。然后定义了一个execute_command()函数用于执行命令,通过pxsshsendline()方法来发送命令,并使用prompt()方法等待命令执行完成,并将结果返回。接下来定义了upload_file()函数和download_file()函数,分别用于上传文件和下载文件,通过执行scp命令来实现。最后在主函数中使用这些函数来实现远程服务器的管理操作,例如执行命令、上传文件、下载文件等。