2013-03-26 2 views
1

Хорошо, так что это странно. В основном, что я пытаюсь сделать, это запустить бесконечный цикл с таймером сна, который задерживает запуск команды, которая перезапускает сетевой интерфейс wlan0. Звучит странно, но по какой-то причине сетевая карта перестает подключаться к сети примерно через два часа. Чтобы все это закрыть, я запускаю веб-сервер для UNI и должен иметь доступ к нему удаленно. Если соединение сходит, мне не повезло. : |Перезапуск почасового сетевого устройства с использованием Bash в Ubuntu

Я нашел это: Bash "if ping then else" My else is not working, который является более аккуратным способом управления сетевым интерфейсом, только делая переконфигурирование, когда он прекращает пингование. Однако это сложнее. И я нашел несколько других подобных битов кода, но они были одинаково расплывчаты.

Если честно, я программист на основе C. C# C++ и Java на этом этапе (Python на самом деле не стоит упоминать), так или иначе, мне нравится только чтение кода bash, не говоря уже о модификации уже существующего снайпера. :)

так вот что я хотел бы сделать в коде sudo.

do { 
    sleep 3600s //works 
    sudo ifconfig wlan0 down //works in terminal but not script 
} while(false); 

так это в значительной степени. Скрипт запускается при запуске. Либо пользователь вручную, либо через систему запуска. Я бы хотел, чтобы он был автоматическим, но команда ifconfig должна запускаться как sudo, что означает запуск скрипта как sudo. :)

И советы и/или указатели будут оценены. Я попробовал использовать старый эхо для ввода пароля для sudo, но, как и ожидалось, разработчики Ubuntu выяснили, как его заблокировать.

только что нашел этот Bash script to bring up and down an interface on loop и этот Making bash script to check connectivity and change connection if necessary. Help me improve it? второй делает то, что я хочу, но это запуск скриптов Башей ???? :)

EDIT-1: OK .... ну, я использовал Crontab, и я думаю, что у меня что-то работает. Я не вижу никаких доказательств этого, например, когда я вызываю sudo ifconfig wlan0 из командной строки. Но я оставлю это завтра и увижу, что он может оставаться в сети. :) Если нет, и я не думаю, что я могу сделать отсюда?

Кстати, способ, которым работает ifconfig, работает на этом конкретном устройстве, состоит в том, что команда отключает устройство через 20 секунд, а затем устройство снова переключается на автоматическое обнаружение сети и повторное подключение. :) Какой любезность IP-адреса, связанного с MAC-адресом, не вызывает проблем для меня. :)

+0

ОК, похоже, мы отказались от скриптов Bash, хотя было бы неплохо сделать скрипт, но cron, похоже, работает ... за исключением того, что я не получаю соединение потерянные всплывающие окна и поиск связанных вещей на ноутбуке, с которым я тестирую. :(Я дам ему вихрь на сервере, когда я вернусь домой. :) ОК ... пошел, чтобы опубликовать этот комментарий, и соединение было отключено .... может, он работает, а не просто повторно подключается. :) – azariah

+0

последнее сообщение для моего комментария. – azariah

ответ

0

Если вы хотите написать сценарий оболочки для этого, который зависит от вас, но я большой поклонник повторного использования того, что уже существует.

Используйте cron для запуска своего скрипта каждый час. Задайте его для учетной записи root и попробуйте связать ее с интерфейсом.

+0

Я заметил, что другие упоминают cron, я должен посмотреть на него. :) – azariah

+0

ok ничего себе, что было легко. Использовал www.corntab.com, чтобы заставить меня двигаться. :) только один вопрос, как я знаю, что он работает и ... как я вызываю ifconfig как sudo, мне нужно присутствовать, чтобы дать ему пароль? или я должен просто запустить crontab как sudo, чтобы избежать этой проблемы – azariah

0

Если вам необходимо, чтобы избежать пароля с помощью , попробуйте следующее:

$ sudo visudo 

А потом, редактировать, чтобы иметь что-то вроде:

Host_Alias LOCAL=10.0.0.1 # your own local IP address 
user2213541  LOCAL=NOPASSWD: /sbin/ifconfig 

Простейший способ запуска команды @start_up - добавить строку в /etc/rc.local, она будет запущена как root.

+0

Добавил «Самый простой способ» сделать это. –

+0

ОК, чтобы решить проблему sudo. Я попробую. Сейчас я отсутствую от сервера, но у меня работает ubuntu на моем ноутбуке, поэтому я дам ему тестовый прогон – azariah

+0

ok, который убил мой файл sudo. Теперь я не могу отредактировать его, чтобы изменить его! Благодаря! – azariah

0

Хорошо, поэтому я выполнил свою задачу, используя Crontab, и сервер остался подключен в течение 7 часов.

Я установил владельца для crontab как root, чтобы команда ifconfig могла быть запущена. Я использовал этот скрипт «0 */1 * * * sudo/sbin/ifconfig wlan0 down» и, похоже, работает. Теперь для тех, кто пытается это сделать сам. Вы должны быть моложе, что ваше сетевое устройство действительно делает то, что делает моя. У меня есть двухдиапазонная сетевая карта TP-Link. Я не знаю, почему, но объединение этой карты с ubuntu и этой командой приводит к автоматическому перезапуску и повторному подключению автоматически.

Ваш миазал будет различаться. :) Я запустил эту команду на своем ноутбуке, и она не перезапустила сетевое устройство, так что ... :) Да, будьте очень осторожны, вы можете понять, как создать соответствующую команду для приведения устройства, но даже мне пришлось вручную подключитесь к Wi-Fi. : | но для этой настройки это сетевое устройство работает. :)

Но да. :) Удачи и будьте осторожны :)

Смежные вопросы