让远程脚本运行到使用脚本的程序结束吗?

问题描述 投票:0回答:1

我想在Linux服务器A上运行程序。Linux服务器B可以监视服务器A的功率指标​​。但是,为了对服务器A上运行的程序进行度量,我需要在服务器A上的程序开始时打开服务器B上的测量脚本,然后在服务器B上手动结束它。

因此,总结一下,如何通过服务器进入服务器以运行程序并随后通过脚本将其终止?

bash ssh openssh ssh-tunnel
1个回答
0
投票

这里需要一些技巧。1.我正在使用sshpass通过ssh(在不安全的脚本中以纯文本格式存储)自动为计算机输入密码。2.我正在用此脚本编写一个脚本,然后通过ssh执行该脚本3.我将服务器A上运行的程序的pid存储在它的/ tmp目录中。

#!/bin/bash
PROGRAM_TO_RUN_ON_SERVER_A="sleep 1000"
PASSWORD_TO_USER_ON_SERVER_A="password"
SERVER_A_USER="user"
SERVER_A_MACHINE_NAME="machine-name"

# Create a local script to run on server A
SCRIPT=/tmp/script.sh
export SSHPASS=${PASSWORD_TO_USER_ON_SERVER_A}
echo '#!/bin/bash' > $SCRIPT
echo "(( ${PROGRAM_TO_RUN_ON_SERVER_A} 0<&- &>/dev/null & echo $! > /tmp/pid.txt) &)" >> $SCRIPT

# Execute script on server A (This also executes your program)
sshpass -e ssh ${SERVER_A_USER}@${SERVER_A_MACHINE_NAME} 'bash -s' < $SCRIPT

# Do server B timing analysis things here
# ...
# ...
# ...

# Kill the program running on server A
sshpass -e ssh ${SERVER_A_USER}@${SERVER_A_MACHINE_NAME} 'cat /tmp/pid.txt | xargs kill -9'
© www.soinside.com 2019 - 2024. All rights reserved.