在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)
我缺少什么?
答案 0 :(得分:0)
Perforce需要运行一组环境变量 - 在ssh上,环境变量在ssh会话中不可见。
为了解决这个问题,我编辑了文件/etc/environment
并在文件中添加了P4PORT, P4USER, P4CLIENT, P4PASSWD
个变种。