Я пытаюсь написать сценарий оболочки, который автоматизирует определенные задачи запуска в зависимости от моего местоположения (дом/кампусA/кампусB). Я учусь в университете и посещаю занятия в двух разных кампусах (отсюда кампус A/кампус B). Мое местоположение определяется тем, к какой беспроводной сети я подключен. Для целей этого сценария мы можем предположить, что я буду подключен к одной из этих сетей при вызове сценария, и мой сценарий знает, к какой из них я подключен, на основе вызова iwconfig
.
Вот что я хочу сделать:
cat file1 > file2 # always do this, regardless of where I am
if Im at home:
start tweetdeck, thunderbird, skype
else if Im at campusA:
activate the login script # I need to login on a webform before I get internet access.
# I have written a script to automate this.
# Wait for this script to finish before doing anything else
myProg2 & # I want myProg2 running in the background until I shutdown my computer.
else if Im at campusB:
ssh username@domain # this is the problematic line
myProg2 & # I want myProg2 running in the background until I shutdown my computer.
start tweetdeck, thunderbird
close the terminal with the "exit" command
Проблема в том, что беспроводная сеть campusB находится за брандмауэром, который предоставляет мне доступ в Интернет ТОЛЬКО после того, как я успешно подключился по ssh с помощью username@domain
. После успешного ssh мне нужно держать окно терминала активным, чтобы сохранить доступ в Интернет. Если я закрою окно терминала, я потеряю доступ в интернет (это плохо).
Когда я пытаюсь выполнить только ssh username@domain
, сценарий останавливается, потому что я не завершаю команду ssh
. Я не могу ^C
выйти из него, а это значит, что остальная часть скрипта никогда не выполняется. У меня также возникает та же проблема, если я просто закрываю окно терминала, пытаясь завершить сеанс ssh
.
Некоторое гугление привело меня к subshell
, который я либо использую неправильно, либо не могу. не использовать для решения моей проблемы. Итак, как мне решить эту проблему? Буду признателен за любую помощь - я уже некоторое время занимаюсь этим и не могу найти ничего полезного. Если это имеет значение, я бы предпочел не хранить свой ssh
пароль в скрипте.
Кроме того, амперсандирование вызова ssh
(ssh username@domain &
), похоже, не приносит никакой пользы (кто-нибудь может объяснить, почему?)
заранее спасибо
ИЗМЕНИТЬ
Я должен уточнить, что ssh-соединение должно быть активным, чтобы у меня был доступ в Интернет. Таким образом, когда я закрываю окно терминала, мне нужно, чтобы ssh-соединение оставалось активным.