Рейтинг:1

Команды Bash Script внутри программы

флаг gq

Пожалуйста, извините меня, если это слишком просто для вас, но я действительно провел поиск, прежде чем публиковать этот вопрос. Я пытаюсь создать свой первый скрипт bash для автоматического подключения к моему softether vpn. Чтобы подключиться вручную, я выполняю следующие шаги;

sudo ./vpnclient старт
судо ./vpncmd

затем он задает мне вопрос о выборе от 1 до 3, я выбираю 2 и нажимаю Enter. Затем он спрашивает меня что-то еще, и я просто нажимаю Enter. Затем;

АккаунтПодключить офис
выход
sudo dhclient vpn_vpn_se
sudo ip route добавить X.X.X.X/32 через 192.168.1.1
выход

Теперь это мой любительский сценарий, но я думаю, что что-то не так, потому что он подходит к той части, где я должен выбрать вариант от 1 до 3, и после этой части он ничего не делает.

#!/бин/баш
cd /home/burock/vpnclient
спать 1
sudo ./vpnclient старт
спать 1
судо ./vpncmd
спать 1
printf "2\n"
спать 1
напечатать "\n"
спать 1
printf "AccountConnect ofis\n"
спать 1
выход
sudo dhclient vpn_vpn_se
спать 1
sudo ip route добавить 46.1.131.30/32 через 192.168.1.1
спать 1
выход

Не могли бы вы мне помочь? Я предполагаю, что он не наберет «2» и не нажмет Enter, потому что он находится под командой vpncmd. Или я все делаю не так... Еще я пробовал делать паузу в 1 секунду между каждой командой. Я использую Lubuntu, кстати, если это имеет значение. Заранее спасибо.

флаг ar
Какую версию Lubuntu вы используете?
Рейтинг:2
флаг hr

Как только вы запустите команду, например судо ./vpncmd, управление не вернется к вашему сценарию, пока команда не завершится (или не перейдет в фоновый режим). Только в этот момент ваш printf команды выполняются, отправляя свой вывод на терминал, как обычно.

Вместо этого вы можете попробовать что-то вроде

{ спать 1
  printf "2\n"
  спать 1
  напечатать "\n"
  спать 1
  printf "AccountConnect ofis\n"
} | судо ./vpncmd

или (если спатьs не являются строго необходимыми) просто

printf '%s\n' 2 "" "AccountConnect ofis" | судо ./vpncmd

и т. д., но если это не сработает, вам может потребоваться сценарий интерактивного сеанса с чем-то вроде ожидать или же автоожидание

lemnlover avatar
флаг gq
Вы, сэр, легенда! Большое спасибо, эти фигурные скобки и труба творили чудеса! Теперь я знаю, что bash может управлять только терминалом, но не приложением, если только мы не используем эти скобки и вертикальную черту!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.