Несколько трюков, необходимых здесь. 1. Я использую sshpass
для автоматического ввода пароля к машине через s sh (хранится в виде обычного текста в небезопасном скрипте). 2. Я пишу скрипт в этом скрипте, который затем выполняется через ssh. 3. Я сохраняю pid программы, работающей на сервере A, в каталоге / 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'
Getting s sh выполнить команду в фоновом режиме на целевой машине