python远程运行linux命令

fiy 其他 109

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要在 Python 中远程运行 Linux 命令,可以使用 Paramiko 模块。Paramiko 是一个 Python 实现的 SSH 库,可以用于远程连接和执行命令。

    首先,需要确保你的 Python 环境中已经安装了 Paramiko 模块。如果没有安装,可以使用以下命令来安装:

    “`
    pip install paramiko
    “`

    接下来,你可以按照以下步骤来远程运行 Linux 命令:

    1. 导入必要的模块:

    “`python
    import paramiko
    “`

    2. 创建 SSHClient 实例:

    “`python
    client = paramiko.SSHClient()
    “`

    3. 设置自动添加主机密钥:

    “`python
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    “`

    4. 连接远程主机:

    “`python
    client.connect(hostname, port, username, password)
    “`

    其中 `hostname` 是远程主机的 IP 地址或域名,`port` 是 SSH 服务的端口号,默认为 22,`username` 是登录用户名,`password` 是登录密码。

    5. 执行命令:

    “`python
    stdin, stdout, stderr = client.exec_command(‘command’)
    “`

    其中 `command` 是要执行的 Linux 命令。

    6. 获取命令执行结果:

    “`python
    output = stdout.read().decode(‘utf-8’)
    “`

    将执行结果转换为字符串,并进行必要的解码

    7. 关闭 SSH 连接:

    “`python
    client.close()
    “`

    完整示例代码如下所示:

    “`python
    import paramiko

    # 创建 SSHClient 实例
    client = paramiko.SSHClient()

    # 设置自动添加主机密钥
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    # 连接远程主机
    client.connect(‘hostname’, port, ‘username’, ‘password’)

    # 执行命令
    stdin, stdout, stderr = client.exec_command(‘command’)

    # 获取命令执行结果
    output = stdout.read().decode(‘utf-8’)

    # 关闭 SSH 连接
    client.close()

    print(output)
    “`

    以上就是在 Python 中远程运行 Linux 命令的方法。使用 Paramiko 可以轻松实现与远程主机的交互和命令执行。注意,在实际使用中,需要替换相应的主机名、用户名、密码和命令,以适应你的实际情况。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Python 是一种功能强大的编程语言,可以用于远程运行 Linux 命令。通过 Python 的 subprocess 模块,可以轻松地与远程服务器建立连接,并执行各种 Linux 命令。下面是一些关于如何通过 Python 远程运行 Linux 命令的方法:

    1. 使用 paramiko 模块:paramiko 是一个 Python 库,可以用于 SSH2 的远程登录。通过 paramiko,可以建立与远程服务器的 SSH 连接,并在连接上执行 Linux 命令。以下是一个使用 paramiko 远程运行 Linux 命令的示例代码:

    “`python
    import paramiko

    # SSH 连接配置
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(‘remote_server’, username=’username’, password=’password’)

    # 执行 Linux 命令
    stdin, stdout, stderr = ssh.exec_command(‘ls’)

    # 输出命令结果
    print(stdout.read().decode(‘utf-8’))

    # 关闭 SSH 连接
    ssh.close()
    “`

    在上面的示例代码中,使用 paramiko 建立 SSH 连接后,通过 `exec_command` 方法执行 `ls` 命令,并通过 `stdout` 输出命令结果。

    2. 使用 fabric 模块:fabric 是一个可用于远程执行命令和部署的 Python 库,它封装了 paramiko 的功能,并提供了更简单的使用方式。以下是一个使用 fabric 远程运行 Linux 命令的示例代码:

    “`python
    from fabric import Connection

    # 建立 SSH 连接
    c = Connection(‘remote_server’, user=’username’, connect_kwargs={‘password’: ‘password’})

    # 执行 Linux 命令
    result = c.run(‘ls’, hide=True)

    # 输出命令结果
    print(result.stdout)

    # 关闭 SSH 连接
    c.close()
    “`

    在上面的示例代码中,使用 fabric 的 `Connection` 对象建立 SSH 连接后,通过 `run` 方法执行 `ls` 命令,并通过 `stdout` 输出命令结果。

    3. 使用 paramiko 和 threading 模块:如果需要同时并发执行多个命令,可以使用 paramiko 和 threading 模块结合,实现多线程执行。以下是一个使用 paramiko 和 threading 远程运行 Linux 命令的示例代码:

    “`python
    import paramiko
    import threading

    def run_command(hostname, username, password, command):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, username=username, password=password)
    stdin, stdout, stderr = ssh.exec_command(command)
    print(stdout.read().decode(‘utf-8’))
    ssh.close()

    hostnames = [‘remote_server1’, ‘remote_server2’]
    username = ‘username’
    password = ‘password’
    command = ‘ls’

    threads = []
    for hostname in hostnames:
    t = threading.Thread(target=run_command, args=(hostname, username, password, command))
    t.start()
    threads.append(t)

    for thread in threads:
    thread.join()
    “`

    在上面的示例代码中,使用 threading 模块创建多个线程,每个线程通过 paramiko 建立 SSH 连接,并执行给定的命令。

    4. 使用 fabric 和 parallel 模块:如果需要同时并发执行多个命令,可以使用 fabric 和 parallel 模块结合,实现并行执行。以下是一个使用 fabric 和 parallel 远程运行 Linux 命令的示例代码:

    “`python
    from fabric import Connection
    from fabric import SerialGroup

    hostnames = [‘remote_server1’, ‘remote_server2’]
    username = ‘username’
    password = ‘password’
    command = ‘ls’

    group = SerialGroup(*hostnames, user=username, connect_kwargs={‘password’: password})
    result = group.run(command, hide=True)
    for host, r in result.items():
    print(f’Result from {host}: {r.stdout}’)
    “`

    在上面的示例代码中,使用 SerialGroup 对象创建多个并行连接,每个连接通过 run 方法执行给定的命令。

    5. 使用 ssh 模块:除了以上介绍的库和模块,还可以使用 ssh 模块来远程运行 Linux 命令。ssh 模块是 Python 中一个简单易用的模块,可以直接在 Python 中执行 ssh 命令。以下是一个使用 ssh 远程运行 Linux 命令的示例代码:

    “`python
    import ssh

    ssh_client = ssh.SSHClient()
    ssh_client.load_system_host_keys()
    ssh_client.connect(‘remote_server’, username=’username’, password=’password’)

    stdin, stdout, stderr = ssh_client.exec_command(‘ls’)
    print(stdout.read().decode(‘utf-8’))

    ssh_client.close()
    “`

    在以上的示例代码中,通过 ssh 模块的 SSHClient() 方法创建一个 ssh 客户端连接,通过 exec_command() 方法执行 Linux 命令,并通过 stdout 输出命令结果。

    通过以上的方法,可以使用 Python 远程运行 Linux 命令,并获取命令的输出结果。无论是单独执行还是并发执行,都可以通过 Python 方便地与远程服务器进行交互和管理。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Python中,我们可以使用paramiko库来实现远程运行Linux命令。Paramiko是一个实现SSHv2协议的Python库,它允许我们进行远程操作,包括执行命令、传输文件等。

    下面是使用paramiko库远程运行Linux命令的步骤:

    ## 安装paramiko库

    首先,我们需要安装paramiko库。可以通过pip或conda来安装paramiko库。使用以下命令安装:

    “`shell
    pip install paramiko
    “`

    ## 导入paramiko库

    “`python
    import paramiko
    “`

    ## 连接到远程服务器

    使用paramiko库的SSHClient类可以创建一个SSH会话并连接到远程服务器。连接远程服务器需要指定服务器的IP地址、用户名和密码。示例代码如下:

    “`python
    import paramiko

    # 创建SSH客户端实例
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接到远程服务器
    ssh.connect(‘服务器IP地址’, username=’用户名’, password=’密码’)
    “`

    ## 执行linux命令

    连接到远程服务器后,我们可以使用`exec_command`方法来执行Linux命令,并获取执行结果。示例代码如下:

    “`python
    stdin, stdout, stderr = ssh.exec_command(‘要执行的Linux命令’)
    # 获取命令执行结果
    result = stdout.read().decode()
    # 输出结果
    print(result)
    “`

    注意,`exec_command`方法返回一个标准输入、标准输出和标准错误的元组。我们可以使用`stdout.read()`方法来获取命令执行结果,并使用`decode()`方法将结果以字符串形式返回。

    ## 关闭SSH会话

    完成命令执行后,我们需要关闭SSH会话,释放资源。示例代码如下:

    “`python
    ssh.close()
    “`

    完整示例代码如下:

    “`python
    import paramiko

    # 创建SSH客户端实例
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接到远程服务器
    ssh.connect(‘服务器IP地址’, username=’用户名’, password=’密码’)

    # 执行Linux命令
    stdin, stdout, stderr = ssh.exec_command(‘要执行的Linux命令’)
    # 获取命令执行结果
    result = stdout.read().decode()
    # 输出结果
    print(result)

    # 关闭SSH会话
    ssh.close()
    “`

    以上就是使用paramiko库远程运行Linux命令的方法。通过这种方式,我们可以很方便地在Python中远程执行Linux命令以进行服务器管理和操作。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部