Запуск bash скрипта из под root'а [Решено]

Изображение пользователя Filkt.

Почитал тут про скрипты, этого не нашёл.
Провайдер инета у меня имеет привязку к MAC адресу (компа), роутера нет, поэтому шнур иногда дергаю с компа в ноут, и приходиться писать 3 строчки в консоль, что бы включить инет, лень. Сделал скриптик (сделал исполняемым chmod +x):
#!/bin/bash
ifconfig eth0 down
ifconfig eth0 hw ether ПУ:МП:УМ:ТР:АТ:АА up
pon dsl-provider

но не учёл, что тут команды то должны от SU выполняться, експереминтировать не стал, сразу сюда вот пишу)
Как, что дописать что б эти 3 строчки от супер пользоватиеля выполнялис?

0
DarkneSS - 13 Октябрь, 2010 - 09:40
Изображение пользователя DarkneSS.

В бунтах: бла бла бла
sudo бла бла бла
sudo бла бла бла

Или перед запуском скрипта sudo /путь/скрипт.sh

0
Filkt - 13 Октябрь, 2010 - 09:43
Изображение пользователя Filkt.

т.е. выглядеть будет так?
#!/bin/bash
sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether ПУ:МП:УМ:ТР:АТ:АА up
sudo pon dsl-provider

а пароли он как требовать будет? я просто хочу не черз консоль их запускть, так то я б просто сделал #sudo ./script
а мышкой на рабочем столе клик, и интернеты запустились

+2
DarkneSS - 13 Октябрь, 2010 - 09:49
Изображение пользователя DarkneSS.

Можно Alt+F2 : kdesu ./script
PS Подождите, народ подтянется, посоветует чего-нибудь.

+4
_KoT_ - 13 Октябрь, 2010 - 10:25
Изображение пользователя _KoT_.

У тебя абсолютно верный совет.
В папке рабочего стола правый клик мышкой -> Создать -> Ссылку на приложение... -> Там во вкладке Приложение команду kdesudo script

+3
knuckles - 13 Октябрь, 2010 - 11:22
Изображение пользователя knuckles.

Напиши вот так:
#!/bin/bash
kdesudo ifconfig eth0 down
kdesudo ifconfig eth0 hw ether ПУ:МП:УМ:ТР:АТ:АА up
kdesudo pon dsl-provider

Пароль в окне будет спрашивать.

+1
DarkneSS - 13 Октябрь, 2010 - 11:27
Изображение пользователя DarkneSS.

А это идея!

0
knuckles - 13 Октябрь, 2010 - 11:35
Изображение пользователя knuckles.

:-) На самом деле твой вариант и вариант _KoT_'а православнее. Правда, в твоем варианте kdesu доставлять придется (по умолчанию он не стоит).

Вообще, я советую создать UpStart Job. Тогда все само будет делаться: выдернул кабель - интерфейс опустился, вставил - поднялся.

0
DarkneSS - 13 Октябрь, 2010 - 11:43
Изображение пользователя DarkneSS.

Я его не доставлял... Скорее всего как рекомендуемый с чем-то поставился.

0
knuckles - 13 Октябрь, 2010 - 11:50
Изображение пользователя knuckles.

А может и нет - мне не стоит верить на слово )

0
DarkneSS - 13 Октябрь, 2010 - 11:54
Изображение пользователя DarkneSS.

По ходу kdesu это линк на kdesudo, потому что пакета kdesu нет.

0
knuckles - 13 Октябрь, 2010 - 12:14
Изображение пользователя knuckles.

Серьезно? Может, ты его не из репов ставил? :-)

0
DarkneSS - 13 Октябрь, 2010 - 12:29
Изображение пользователя DarkneSS.

Ага, компилял)

+1
Filkt - 13 Октябрь, 2010 - 12:38
Изображение пользователя Filkt.

>UpStart Job
это как? и что? (лень гуглить)

+1
knuckles - 13 Октябрь, 2010 - 13:45
Изображение пользователя knuckles.

Да, собственно, что тут гуглить, вот.
Дело в том, что мне приходилось делать это только один раз, да и то давно это было. Сейчас я сходу не расскажу по шагам - надо смотреть, вспоминать, заново разбираться. Думаю, с тем же успехом ты можешь сделать это сам :-)
Из того, что помню:
- нужно создать в каталоге /etc/init файл с расширением *.conf. Например, my_job.conf. Он должен быть обычным текстовым файлом, не исполняемым;
- в начале файла нужно указать директиву start on <имя_события> - самое сложное здесь, это выяснить какое событие возникает в UpStart, когда кабель втыкается;
- ниже написать что-то вроде:
script
   ifconfig eth0 down
   ifconfig eth0 hw ether ПУ:МП:УМ:ТР:АТ:АА up
   pon dsl-provider
end script

Т.е. идея в том, что код между script и end script выполняется при возникновении события <имя_события>, которое указывается в директиве start on. Но, опять же, насколько я помню, описанных шагов недостаточно. Надо там еще что-то делать. Помню еще только, что вручную можно запускать так: sudo start my_job

UPD: Кстати, в том самом каталоге /etc/init можно посмотреть примеры файликов *.conf ;-)

+2
Voyageur - 13 Октябрь, 2010 - 17:01
Изображение пользователя Voyageur.

Возможно будет полезно...Я описывал похожую ситуацию вот тут. Там все делается через диспатчер, который анализирует состояние интерфейсов. Проблема решается добавлением скрипта в папку /etc/network/if-up.d, дав ему там права на исполнение.

0
SEVA - 13 Октябрь, 2010 - 10:19
Изображение пользователя SEVA.

Может создать рутом /usr/share/autostart и дать себе права на исполнение? Тогда автоматом будет запускаться.

0
Samath - 13 Октябрь, 2010 - 11:37

можно сделать так, только я не знаю, по феншую ли это:

делаешь скрипт
#!/bin/bash
sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether ПУ:МП:УМ:ТР:АТ:АА up
sudo pon dsl-provider

потом пишешь в консоли sudo /etc/sudoers
там добавь строки:
Имя_пользователя ALL = NOPASSWD: ifconfig eth0 down
Имя_пользователя ALL = NOPASSWD: ifconfig eth0 hw ether ПУ:МП:УМ:ТР:АТ:АА up
Имя_пользователя ALL = NOPASSWD: pon dsl-provider

а потом можешь сделать ярлык на свой скрипт.

+1
Filkt - 13 Октябрь, 2010 - 11:10
Изображение пользователя Filkt.

ок, спасибо, приду с работки попробую провернуть все эти офёры)

0
Fatalist - 13 Октябрь, 2010 - 11:25
Изображение пользователя Fatalist.

Пробуй методы DarkneSS'а и _KoT_'а, остальные не надо.

+5
Filkt - 13 Октябрь, 2010 - 17:55
Изображение пользователя Filkt.

всё разобрался спасибо всем сделал как сказал _KoT_

У тебя абсолютно верный совет.
В папке рабочего стола правый клик мышкой -> Создать -> Ссылку на приложение... -> Там во вкладке Приложение команду kdesudo script

только во вкладке приложение команду надо писать с параметро -с, что б он выполнил скрипт, тоесть
kdesudo -c "путь до скрипта"

p.s. я вот понять не могу, уже скок раз жму кому нть на плюсик на цитате, и ничего не происходит, чё за хэрь...

0
DarkneSS - 13 Октябрь, 2010 - 21:07
Изображение пользователя DarkneSS.

Мб кармы не хватает

0
knuckles - 14 Октябрь, 2010 - 06:58
Изображение пользователя knuckles.

Да, карма должна быть не меньше трех, по-моему. Может накликаем ему? :-)
UPD: пробуй, Filkt.

+1
Filkt - 14 Октябрь, 2010 - 12:32
Изображение пользователя Filkt.

спасибо) получилос

0
Гость - 14 Март, 2012 - 21:58

в файл etc/rc.local
добавить строку вида /home/user/./script

0
Chibiko - 4 Апрель, 2012 - 13:09
Изображение пользователя Chibiko.

О_о ребята, всё гораздо проще:
/etc/network/if-pre-up.d/replacemac
#!/bin/sh
ifconfig eth0 hw ether 00:11:22:33:44:55
exit 0

Пофиг куда скрипт например inet.sh:

И добавить в /etc/crontab строку:
0-59 *  * * *   root    /путь/до/скрипта/inet.sh

В итоге при загрузке будет меняться MAC, и подключаться тырнет. Кроме того при разрыве он будет переподключаться сам 8)

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

CAPTCHA на основе изображений
Введите цифры