【问题标题】:Python: Perforce client error while remotely executing command [duplicate]Python:远程执行命令时执行客户端错误[重复]
【发布时间】:2018-08-31 10:20:14
【问题描述】:

在 Linux 机器 A 上,我有一个脚本正在运行,它应该 ssh 到 Linux 机器 B,同步 B 上的 p4 工作区然后执行一段代码。

我已经在 B 上设置了 Perforce,我可以在 B 上手动执行 p4 client 和其他命令并且它们可以工作。

但是,当我尝试从机器 A 进行 ssh 时执行相同的操作时,我收到以下错误:

Perforce 客户端错误: 连接服务器失败;检查 $P4PORT。 TCP 连接到 perforce:1666 失败。 名称解析暂时失败

这是我的一段代码:

def ssh_connect(ip,user,pwd):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip, username=user, password=pwd)  
    return ssh


def execute_command(device_details, command):
    try:
        ip = device_details.get('ip')
        username = device_details.get('username')
        password = device_details.get('password')
        ssh_ns_obj = ssh_connect(ip, username, password)

        ssh_stdin, ssh_stdout, ssh_stderr = ssh_ns_obj.exec_command(command)
        print ssh_stdout.read()
        print ssh_stderr.read()
        print ssh_stdin.read()
        return ssh_stdout.read()
    except Exception as e:
        print_exception_details()      


perforce_sync_command = "cd /root/hello/;chmod -R 444 *;p4 sync ...;chmod -R 755 *"
output = execute_command(device_details, perforce_sync_command)

我错过了什么?

【问题讨论】:

    标签: python ssh perforce paramiko


    【解决方案1】:

    Perforce 需要一组环境变量才能运行 - 在 ssh 上,环境变量在 ssh 会话中不可见。

    为了解决这个问题,我编辑了文件 /etc/environment 并在文件中添加了 P4PORT, P4USER, P4CLIENT, P4PASSWD 变量。

    【讨论】:

    • 执行此操作的更标准方法是使用p4 set 命令(写入您的.p4enviro 文件)或在脚本中指定-p PORT -u USER -c CLIENT 标志。
    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 2018-11-30
    • 2015-03-29
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多