Bash скрипт не работает должным образом при запуске автоматически

У меня есть скрипт, который автоматически устанавливает мой прокси-сервер в зависимости от соединения, поэтому он находится в папке /etc/network/if-up.d/. Я устанавливаю прокси с помощью инструмента gsettings, а затем хочу показать уведомление на рабочем столе.

Я использую уведомлять OSD следующим образом:

notify-send -u 'critical' -i /home/vivek/Downloads/proxy.ico 'SetProxy Status' 'proxy set to auto'

Сценарий работает нормально, потому что я пытался распечатать некоторые сообщения журнала в файл, который предполагает, что сценарий выполняется, но я не делаю увидеть любые видимые изменения, когда я проверяю свои настройки прокси, Системные настройки-> Сетевой прокси, я вижу, что прокси не изменился, хотя он фактически изменился [Я проверил браузер и настройки прокси были применены], Также я не вижу уведомления. 114]

Удивительно, если я запускаю сценарий явно следующим образом:

cd /etc/network/if-up.d/
sudo ./setproxy

Я сразу вижу уведомление, а также изменения отражаются в настройках Network Proxy. Почему это происходит? Как я могу это исправить? Я нахожусь в системе Ubuntu 12.04.

2
задан 30 December 2012 в 12:21

2 ответа

Я бы предложил просто добавить скрипт в / etc / bash_completion, который должен использоваться каждый раз, когда вы открываете терминал, поскольку он содержится в конце ~ / .bashrc. В качестве альтернативы вы можете добавить скрипт непосредственно в конец ~ .bashrc. Если вы решите добавить его в bash_completion, он должен содержать строку

. /etc/network/if-up.d/setproxy

, и вы должны проверить ~. / Bashrc, чтобы убедиться, что используется bash_completion (он находится в конце файла). Конец моего ~. / Bashrc выглядит как

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi

Просто для того, чтобы вы могли убедиться, что bash_completion не закомментирован.

0
ответ дан 30 December 2012 в 12:21

Все, что не находится в вашей домашней папке, требует разрешения root для выполнения в целях безопасности в случае многопользовательских систем. Поместите скрипт настроек прокси в домашнюю папку внутри специальной папки, скажем, ~/commands. Добавьте эту строку PATH=$PATH:~/commands в .bashrc

echo 'PATH = $ PATH: ~ / команды' >> .bashrc

Теперь, каждый раз, когда вы запускаете setproxy, как и любая другая команда, например, ls или date, будет установлен прокси. Просто добавьте sudo внутри скрипта, чтобы избежать конфликта разрешений.


В качестве альтернативы 1:

Этот форум рассказывает о Upstart , который довольно прост в использовании.


В качестве альтернативы 2:

Просто включите учетную запись root в своей системе и всегда используйте ее.
Предупреждение: это опасно для системы, если вы не знакомы с функционированием системы, склонны совершать глупые или небрежные ошибки или по какой-то причине отвлекаетесь и по незнанию допускают ошибку.

0
ответ дан 30 December 2012 в 12:21

Другие вопросы по тегам:

Похожие вопросы: