Python:远程执行命令时Perforce客户端错误

时间:2018-03-22 04:59:16

标签: python ssh perforce paramiko

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

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

然而,当我在从机器A sshing时尝试做同样的事情时,我收到以下错误:

  

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)

我缺少什么?

1 个答案:

答案 0 :(得分:0)

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

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