Автор Тема: Скрипт Bash  (Прочитано 4653 раз)

Оффлайн Pack

  • Участник
  • *
  • Сообщений: 95
Скрипт Bash
« : 12.11.2010 22:00:59 »
Подскажите пожалуйста как можно оформить срипт запуска или остановки служб, к примеру мне надо сделать так чтобы я мог на рабочем столе нажать иконку а у меня пере запустились вот эти службы netpolice
/etc/rc.d/init.d/memcached restart
/etc/rc.d/init.d/host2cat restart
/etc/rc.d/init.d/c-icap restart
/etc/rc.d/init.d/squid restart
как это оформить одной кнопкой без запросов паролей и тд.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Скрипт Bash
« Ответ #1 : 12.11.2010 23:27:58 »
Без запроса паролей не получится.

#!/bin/bash

su -
service memcached restart
service host2cat restart
и т.д и т.п

Может проще поднимать эти демоны при запуске?

Оффлайн Pack

  • Участник
  • *
  • Сообщений: 95
Re: Скрипт Bash
« Ответ #2 : 13.11.2010 08:48:18 »
Они стоят у меня в автостарте но дело в том что у нас нестабильное интернет соединение и после разрывов, приходится перезапускать эти службы чтобы работал фильтр. В общем проблема началась со спутниковым симметричным интернетом на котором этот фильтр не в какую не хочет работать, трафик предоставляется RTComm уже отфильтрованный частично, но с ним netPolice не работает, а на любом другом альтернативном канале (GSM,ADSL)  работает нормально. Вот я приладил к этому всему делу мегафон модем, но получается так что сначала службы запускаются раньше чем интернет соединение, и фильтр нормально не стартует. Приходится его перегружать.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Скрипт Bash
« Ответ #3 : 13.11.2010 09:15:43 »
Ну, приделайте к скрипту kdesu, или что-то подобное.

Оффлайн Карлсон

  • Участник
  • *
  • Сообщений: 1 699
Re: Скрипт Bash
« Ответ #4 : 13.11.2010 09:33:05 »
или что-то подобное.

sudo? На конкретные команды.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 160
    • Домашняя страница
Re: Скрипт Bash
« Ответ #5 : 13.11.2010 16:04:44 »
sudo? На конкретные команды.
Тоже неплохой вариант. :)
Только вот нужно сделать отдельный скрипт перезапуска и дать права на его запуск под root, а не давать права на service.
Андрей Черепанов (cas@)

Оффлайн Pack

  • Участник
  • *
  • Сообщений: 95
Re: Скрипт Bash
« Ответ #6 : 01.12.2010 23:34:38 »
Ну подскажите можно ли обойтись без sudo ?  И каким образом ? К примеру на рабочем столе есть программы Konqueror но в настройках иконки я вижу что права у него root, вот по чему я не могу что то подобное сделать для запуска скрипта ? Сам скрипт работает, но только под рутом и через консоль конечно.

#!/bin/bash

service memcached restart pause 10
service host2cat restart pause 10
service c-icap restart pause 10
service squid restart pause 10

а на рабочем столе я создал ссылку на приложение и попытался прописать путь и команду запуска скрипта, но пока без успешно, скрипт вызывается, но без прав. И само собой службы не стартуют:
Password:
Stopping memcached service: Service memcached is not running.                                                 [PASSED]
Starting start-memcached service: touch: невозможно выполнить touch для `/var/lock/memcached': Отказано в доступе
                                                                                                              [ DONE ]
Service host2cat is not running.rm: невозможно удалить `/var/lock/subsys/host2cat': Отказано в доступе
                                                                                                              [PASSED]
Starting host2cat service: server 127.0.0.1:11211 successfully added
Can't bind UDP socket: Address already in use
                                                                                                              [FAILED]
start-stop-daemon: open pidfile: /var/run/c-icap/c-icap.pid: Permission denied
Service c-icap is not running.rm: невозможно удалить `/var/lock/subsys/c-icap': Отказано в доступе
                                                                                                              [PASSED]
start-stop-daemon: open pidfile: /var/run/c-icap/c-icap.pid: Permission denied
Service c-icap is already running.                                                                            [PASSED]
Service squid is not running.rm: невозможно удалить `/var/lock/subsys/squid': Отказано в доступе
                                                                                                              [PASSED]
sed: невозможно прочитать /etc/squid/squid.conf: Отказано в доступе
/etc/init.d/squid: line 61: ulimit: open files: cannot modify limit: Операция не позволена
Starting squid service: FATAL: Unable to open configuration file: /etc/squid/squid.conf: (13) Permission denied
Squid Cache (Version 3.0.STABLE19): Terminated abnormally.
CPU Usage: 0.012 seconds = 0.008 user + 0.004 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
                                                                                                              [FAILED]
но из консоли и с правами root все работает норм. А мне нужно упросить все.
а да сам скрипт я разместил в /usr/local/bin это подходящие место ?
« Последнее редактирование: 01.12.2010 23:36:16 от Pack »

Оффлайн Карлсон

  • Участник
  • *
  • Сообщений: 1 699
Re: Скрипт Bash
« Ответ #7 : 02.12.2010 00:47:10 »
А мне нужно упросить все.

Упростите. Настроив sudo на выполнение нужных команд для нужного пользователя с нужными привилегиями.


Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Скрипт Bash
« Ответ #8 : 02.12.2010 00:50:35 »
sudo имя_вашего_скрипта
или

kdesu имя_вашего_скрипта

Оффлайн Pack

  • Участник
  • *
  • Сообщений: 95
Re: Скрипт Bash
« Ответ #9 : 05.12.2010 22:46:01 »
Снова нужна ваша помощь. В общем не получается мая затея а хочется. Перечислю то что сделал:
1.сделал вот так в sudoers
# User privilege specification
root ALL=(ALL) ALL
pack ALL=(ALL) ALL
2.из консоли запустил из под пользователя pack службы стартуют и все работает
[pack@comp-Core2-CPU-cbded6 ~]$ sudo /usr/local/bin/NetPolice.sh
[sudo] password for pack:
Stopping memcached service: Service memcached is not running.                           [PASSED]
Starting start-memcached service:                                                                             [ DONE ]
Stopping host2cat service:                                                                                    [ DONE ]
Starting host2cat service:                                                                                    [ DONE ]
Stopping c-icap service:                                                                                      [ DONE ]
Starting c-icap service:                                                                                      [ DONE ]
Stopping squid service:                                                                                       [ DONE ]
Starting squid service:                                                                                       [ DONE ]
[pack@comp-Core2-CPU-cbded6 ~]$

3.пробую запустить с рабочего стола и тут просто прикол, на вид все работает:
Password:
[sudo] password for pack:
Stopping memcached service: Stopping memcached service:                             [ DONE ]
Starting start-memcached service:                                                                       [ DONE ]
Stopping host2cat service:                                                                                    [ DONE ]
Starting host2cat service:                                                                                    [ DONE ]
Stopping c-icap service:                                                                                      [ DONE ]
Starting c-icap service:                                                                                      [ DONE ]
Stopping squid service:                                                                                       [ DONE ]
Starting squid service:                                                                                       [ DONE ]

            а по факту фильтр не работает, и если снова в консоли пробую запустить все работает нормально.


На всякий случай пришлю конфиг иконки.
[Desktop Entry]
Comment[ru]=
Comment=
Exec=sudo /usr/local/bin/NetPolice.sh
GenericName[ru]=
GenericName=
Icon=NetPolice
MimeType=
Name[ru]=Привет
Name=Привет
Path=
StartupNotify=true
Terminal=true
TerminalOptions=\s--noclose
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=true
X-KDE-Username=pack