Как заставить bash скрипт продолжить выполнение в новой вкладке терминала

компьютеры программирование Linux bash +shell

Хоть я и полный нуб в этом - всё же осилил и написал почти весь скрипт, кроме последней (самой важной для меня) части. Если кратко: Запускается скрипт во вкладке, по циклу постоянно пингует гугл на предмет наличия инета. Параллельно работает программа во второй влкадке терминала которая делает определённые действия. Для запуска программы пишется: имя_программы ip_адрес_хоста ip_адрес_роутера, после запуска программа начинает без перерыва выбрасывать сообщения о пакетах и статистике - т.е. писать в её вкладке уже не получится. Если скрипт обнаруживает, что интернета нет - он должен перейти (именно перейти) во вторую вкладку, нажать условно ctrl+c, т.е. остановить выполнение программы, вписать в освободившуюся консоль имя_программы новый_ip_адрес_хоста ip_адрес_роутера и после того как программа вновь запустилась - вернуться к своему циклу проверок... И вроде бы ничего, скрипт работает, видит что инета нет, переходит в другую влкадку...и ничего. Просто ничего не происходит. Выполнение программы продолжается. После экспериментов со screen выяснилось что запуск программы в режиме демона сразу - не получается. Переход по вкладкам пробовал осуществлять через xdotool key "Shift+Left\Right". При наборе этой команды вручную - всё работает. При запихивании в скрипт - не работает. Пробовал писать тестовый скрипт, что бы он создавал новую вкладку и писал в новой влкадке терминала дату - не получается. Новая влкадка создаётся, но дата пишется в первой вкладке, при этом проставлял строгую очерёдность команд в скрипте - ощущение что крипт послушно выполняет переход\создаёт новую вкладку, но оказавшись там - напрочь забывает зачем он туда пришёл. Т.к. в дальнейшем намечаются скрипты, которые должны работать по такой же схеме с переходами по вкладкам - необоходимо добиться что бы скрипт работал именно таким образом.. Ещё раз оговорюсь - я в этом пока полный нуб, но очень нужен скрипт. Заранее спасибо

Примечание:
к сожалению всё выложить только утром смогу. На счёт изобретения колеса согласен - у меня такое же ощущение весь день. А до завтрашнего утра, дабы избежать сложностей, весь мой скрипт можно привести к одному простому примеру:
ping -c5 8.8.8.8 # пингуем ДНС сервер гугла
xdotool key "Control+Shift+T" # создаём новую вкладку в терминале переходим на неё
ping -c5 www.ya.ru # запускаем пинг яндекса на второй вкладке
xdotool key "Shift+Left" # переходим на первую вкладку обратно
Итого: мне нужно что бы на обеих вкладках по окончании скрипта я видел результат пинга. На деле же скрипт выполняет пинг гугла, создаёт новую вкладку и всё. фокус остаётся на второй вкладке, никакого пинга яндекса на ней не происходит, а нужно что бы скрипт проделал всё на второй вкладке и вернулся обратно.

Примечание:
добравшись до компа выкладываю кусок скрипта что бы было понятнее:
#!/bin/bash
while true
do
ping 8.8.8.8 -c5
if [ "$? " -ne 0 ]
then
echo "ИНЕТА НЕТ - ПЕРЕЗАГРУЖАЕМ СЕТЬ..."

/etc/init.d/networking restart
wicd-cli -y -n 0 -p enctype -s wpa #подключаемся к сети снова
wicd-cli -y -n 0 -p key -s blablabla
wicd-cli -y -n 0 -c
wait
wlan0= /sbin/ifconfig wlan0 | egrep -o "addr:[0-9.]+" | cut -b 6-
xdotool key "Control+Left" #заранее открыто две вкладки - переходим на вкладку
#с работающей параллельно программой
xdotool key "Control+C" #останавливаем запущенную программу
lambada $wlan0 192.168.1.1 #подставляем новый наш ip и запускаем программу снова
sleep 3
xdotool key "Control+Right" #возвращаемся на предыдущую вкладку и продолжаем цикл проверок
else
date
echo "Инет есть - спим..."
sleep 30
fi
done

exit 0

и всё бы хорошо но начиная с попытки перехода на новую вкладку - всё стопориться и перестаёт работать. А мне очень важно что бы скрипт выполнял все эти действия. Как уже говорил - в одной консоли всё запустить не получится т.к. программа lambada запустившись занимает консоль и нет возможности в ней что то писать. через скрин в режиме демона программа тоже запускаться не хочет, видимо потому, что при запуске ей требуется сразу прописывать и параметры.

Примечание:
единственным вариантом к сожалению является именно вариант эмитирующий ручное управление, т.к. это только первый скрипт и в дальнейшем мне придётся писать подобные скрипты ещё с целым рядом самописных проргамм
Ответы:
Единственный вариант - это реализовать через передачу сигналов и использовать какой-то сокет для обмена данными
Желательно ещё сюда и скрипт выложить ;) Хотя бы проблемную часть
ты пытаешся сделать что то страшное. не то что велосипед изобрести а колесо.
вылаживай сами скрипты ибо из твоего описания ничего не понять.
и нормально обрисуй чего ты хочешь добиться.
Мне кажется ты не в том направлении идешь. Почему бы не использовать для этого передачу данных через каналы либо через процессы.
Почитай может поможет.
А прочитай еще про mkfifo.


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.