我以 root 身份使用 cronjob 通过 lsof 检查某些远程机器是否已建立到主服务器的 ssh 隧道(root,否则 lsof 和 netstat 将不会显示用户名和 sshd pid)。
然后对于每个连接,我想运行部署脚本,在这些连接上执行一系列任务:
for script in "${deploy_scripts[@]}"
do
set +e
sudo -u $deploy_user -H ${script} $user $port $conpid 2>&1 > /tmp/deploy.log
res=$?
set -e
if [ $res -ne 0 ]; then
echo error executing in $script
cat /tmp/deploy.log
fi
done
每个部署脚本基本上看起来像
#!/bin/bash
set -x
set -e
user=$1
port=$2
pid=$3
do stuff
但是 deploy.log 总是空的,我想知道什么时候会失败。我尝试过执行和BASH_XTRACEFD,但我不知道如何在每次部署脚本后重置它,以便它不会捕获根脚本。部署脚本应该不知道这个日志记录。