Я хочу иметь сценарий, который сначала подключает меня к удаленному ПК с ssh и выполняет некоторые команды там. Эти команды запускают процесс, который будет работать навсегда (остановки с вводом данных пользователем). Теперь, я должен выполнить некоторые команды на своем локальном ПК (к сожалению, не возможно выполнить их прежде ssh'ing). Таким образом, мои мысли состоят в том, чтобы открыть новый терминал прежде, чем соединиться с удаленным, затем выполнить ssh и команды, и затем переключиться назад на терминал в локальном и выполнить остальную часть команд. Два исходных данных являются портом на удаленном и портом на локальном.
До настоящего времени мой сценарий похож, следуйте:
#!/bin/bash
echo "Connecting to server"
ssh -t -t <name>@ip << EOF
cd /path/to/directory &&
conda activate <environment_name> &&
tensorboard --logdir=<log/directory> --port $2
EOF
echo "Connected"
gnome-terminal -e exit
echo "Connecting with localhost"
ssh -N -f -L localhost:$1:localhost:$2 <name>@ip
Но это не работает. Я только подключаюсь к удаленному, и не возможно открыть xterm впоследствии, потому что tensorboard постоянно работает. Так, как открыть терминал заранее и переключиться назад на него?
Или какое-либо другое предложение, как решить эту проблему?
Заранее большое спасибо!
Я рекомендовал бы byobu
. Я надеюсь следующий сервер кода Ваша цель:
#!/bin/bash
# Check if there is already a session named 'remote'
if [ -z "$(byobu list-sessions | grep remote)" ]
# If not, start a new session
then
byobu new-window -n remote ssh user@remote;
byobu send-keys -t remote 'conda activate <env>' 'C-m'
byobu send-keys -t remote 'tensorboard --logdir=<log/directory> --port $2' 'C-m'
byobu new-window -n local;
byobu send-keys -t local 'ssh -N -f -L localhost:$1:localhost:$2 <name>@ip' 'C-m'
fi
# Attach session
byobu attach-session -t remote
В коде выше, я не уверен, что $1
и $2
! я рекомендовал бы создать небольшую доступную функцию (любой в .bashrc
или исполняемый файл в $HOME/bin
), который принял бы эти параметры...
Надеюсь, это поможет!
- Mike
Вы рассмотрели выполнение задания в фоновом режиме? Можно достигнуть этого при добавлении амперсанда &
в конец команды. Можно отправить несколько заданий в фон bg
и затем возвратите их в приоритетном использовании fg