使用P4运行crontab作业

时间:2017-11-22 04:15:40

标签: python linux shell cron perforce

我有一个shell脚本,它又调用python脚本。但是在python脚本运行之前,我正在设置环境变量以便拥有正确的P4配置。

shell: /home/ag/ump_prod/run.sh
python script: /home/ag/ump_prod/cron.py
Environment conf: /home/ag/ump_prod/env.conf

python脚本通过子进程模块执行命令行P4命令。 这是shell脚本的代码

#!/bin/sh
. /home/ag/ump_prod/env.conf
python /home/ag/ump_prod/cron.py

env.conf

export SHELL=/bin/bash
export USER=ag
export MAIL=/var/mail/ag
export HOME=/home/ag
export LOGNAME=ag
export P4CONFIG=/home/ag/ump_prod/.perforce

perforce config /home/ag/ump_prod/.perforce:

P4CLIENT=ag_ump
P4EDITOR=/usr/bin/vim
P4PORT=rsh:ssh -2 -q -a -x -l p4server p4.****.com /bin/true
P4USER=ag

手动运行shell脚本会毫无问题地执行它。 但是,当我通过cronjob运行它时,它会抱怨它无法连接到服务器。

错误讯息:

['TCP receive failed.\n', 'read: socket stdio: Connection reset by peer\n', 'Perforce client error:\n', '\tTCP receive failed.\n', '\tread: socket stdio: Connection reset by peer\n']

请告诉我在设置P4配置的环境变量时可能出错的地方。提前致谢!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:我还需要为cronjob动态启动ssh-agent。这就像你第一次登录并启动ssh-agent一样。我们还需要告诉cronjob包含eval ssh-agent