imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Программы и Операционные системы > Пингвинятник (ОС *NIX)
Опции темы
Старый 15.07.2007, 20:41     # 1
Stereoz
Guest
 
Сообщения: n/a

Скриптеры! Помогите.

Суть: не для кого не секрет, что в большенстве дистрибутивов не работают конфигураторы pptp подключений. и их приходится поднимать в ручную, для этого я написал скрипт:
#! /bin/bash
. /etc/rc.d/init.d/functions
case "$1" in
up)
echo "Подключается интернет..."
pppd call lanpolis
echo "Добавить маршрут? y or n?"
read x
case $x in
y)
route add default ppp0
echo "Маршрут добавлен"
;;
*)
echo "Маршрут не добавлен"
esac
echo "OK - Made by Stereoz"
;;
down)
echo "Отключается интернет..."
ПРОБЛЕМА ТУТ
echo "ОК - Made by Stereoz"
;;
*)
echo "Неверный параметр $1"
exit 1
esac
exit 0

Проблема с отключением интернета если тупо вводить ifconfig ppp0 down то процесс не убивается, и следующее подключение идет через ppp1 и т.д. процесс можно убить kill PID но скрипт то не знает какой id он только знает какой Pname, как можно получить переменную возвращающую id процесса зная его имя? Заранее спасибо тем кто откликницца!!!
 
Старый 15.07.2007, 21:56     # 2
pnp2000
Full Member
 
Аватар для pnp2000
 
Регистрация: 12.12.2003
Пол: Male
Сообщения: 1 780

pnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэйpnp2000 Сэнсэй
а если за'grep'пить вывод top и оттуда уже выдрать PID ????
pnp2000 вне форума  
Старый 15.07.2007, 23:42     # 3
ZogG
Junior Member
 
Аватар для ZogG
 
Регистрация: 03.11.2002
Пол: Male
Сообщения: 111

ZogG Известность не заставит себя ждать
killall 'process name'
__________________
КТО-НИБУДЬ ХОЧЕТ ПРИСОЕДИНИТЬСЯ К РАЗВИТИЮ <ПРОЭКТА> ...
ZogG вне форума  
Старый 16.07.2007, 10:14     # 4
Stereoz
Guest
 
Сообщения: n/a

Во-первых из топа выдрать не получится, а только из ps -e pppd | grep -i pppd но тогда можно получить переменную типа PID TIME PNAME. а вообще как сказать бэшу что бы он работал, с переменной как со строкой, по аналогии с паскалем? to ZorG спасибо.
 
Старый 16.07.2007, 11:47     # 5
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
ещё pkill есть
Drakosha вне форума  
Старый 16.07.2007, 18:53     # 6
Gennadi
Member
 
Аватар для Gennadi
 
Регистрация: 26.08.2002
Адрес: Germany
Сообщения: 232

Gennadi МолодецGennadi МолодецGennadi Молодец
Попробуй так....

Цитата:
#! /bin/bash
. /etc/rc.d/init.d/functions
PPP_PID=/var/run/ppp.pid
case "$1" in
up)
if [ -f $PPP_PID ]
then
echo -n "Internet уже подключён..."
else
echo -n "Подключается интернет..."
pppd call lanpolis > /dev/null 2>&1 &
echo $! > $PPP_PID
echo "PPP started. PID:$!"
fi

echo "Добавить маршрут? y or n?"
read x
case $x in
y)
route add default ppp0
echo "Маршрут добавлен"
;;
*)
echo "Маршрут не добавлен"
esac
echo "OK - Made by Stereoz"
;;
down)

if [ ! -f $PPP_PID ]
then
echo -n "PPP is down!!!"
else
echo -n "Internet отключается....."
kill -9 `cat $PPP_PID`
rm $PPP_PID
echo "Internet отключён...."
fi

;;
*)
echo "Неверный параметр $1"
exit 1
esac
exit 0
__________________
Я - root, мне всё разрешено...
... и это тоже
echo "I am king" | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' &

Последний раз редактировалось Gennadi; 16.07.2007 в 18:56.
Gennadi вне форума  
Старый 16.07.2007, 22:06     # 7
Stereoz
Guest
 
Сообщения: n/a

ЭЭЭ да. единственное что не понятно это (последние 6 символов)
pppd call lanpolis > /dev/null 2>&1 &
Пасибо тебе, но только она не работает как надо, короче через раз работает. пишет что нет такого устройства, ну да ладно а вообще я сократил свою до:
#! /bin/bash
. /etc/rc.d/init.d/functions
case "$1" in
up)
echo "Подключается интернет..."
pppd call lanpolis
sleep 2
route add default ppp0
;;
down)
echo "Отключается интернет..."
killall pppd
;;
*)
echo "Неверный параметр $1"
exit 1
esac
echo "OK - Made by Stereoz"
exit 0
Все замечательно работает!!!!!
 
Старый 17.07.2007, 01:27     # 8
ZogG
Junior Member
 
Аватар для ZogG
 
Регистрация: 03.11.2002
Пол: Male
Сообщения: 111

ZogG Известность не заставит себя ждать
поиграйся с pgrep и pidof
__________________
КТО-НИБУДЬ ХОЧЕТ ПРИСОЕДИНИТЬСЯ К РАЗВИТИЮ <ПРОЭКТА> ...
ZogG вне форума  
Старый 17.07.2007, 23:43     # 9
Gennadi
Member
 
Аватар для Gennadi
 
Регистрация: 26.08.2002
Адрес: Germany
Сообщения: 232

Gennadi МолодецGennadi МолодецGennadi Молодец
Это же элементарный init-script... например назовём его - "progd"

На этом примере стартует "konqueror" ( можешь свою прогу таким образом запускать... ) и пишет номер процесса в файл "/var/run/prog.pid"

/etc/init.d/progd {start|stop|restart|status}


Цитата:
#! /bin/bash
BIN_PROG="konqueror"
PROG_PID=/var/run/prog.pid
case "$1" in
start)
if [ -f $PROG_PID ]
then
echo -e "Программа уже стартовала..."
else
echo -e "Программа стартует..."
$BIN_PROG > /dev/null 2>&1 &
echo $! > $PROG_PID
echo -e "Программа стартовала. PID:$!"
fi
;;
stop)
if [ ! -f $PROG_PID ]
then
echo -e "Программа выключёна!!!"
else
echo -e "Программа отключается....."
kill -9 `cat $PROG_PID`
rm $PROG_PID
echo -e "Программа выключёна...."
fi
;;
restart)
progd stop
sleep 2
progd start
;;
status)
if [ -f $PROG_PID ]
then
echo -e "Программа уже стартовала..."
else
echo -e "Программа выключёна...."
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
__________________
Я - root, мне всё разрешено...
... и это тоже
echo "I am king" | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' &
Gennadi вне форума  
Старый 23.07.2007, 02:16     # 10
Zes
Member
 
Аватар для Zes
 
Регистрация: 26.05.2004
Адрес: Планета обезьян
Сообщения: 348

Zes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форумеZes Популярный человек на этом форуме
Цитата:
Сообщение от Gennadi Посмотреть сообщение
Это же элементарный init-script... например назовём его - "progd"

На этом примере стартует "konqueror" ( можешь свою прогу таким образом запускать... ) и пишет номер процесса в файл "/var/run/prog.pid"

/etc/init.d/progd {start|stop|restart|status}
с PIDом проблемка только может быть если процесс сдох неестественной смертью (не через init или
запускной скрипт),так что совет если файлик есть,то If-ом проверить бегает ли процесс.

P.S Кстати,можно поиграться с lsof,посмотреть какие процессы держат тот или иной файл,включая дивайс файлы
__________________
Beware of programmers carrying screwdrivers...

Последний раз редактировалось Zes; 23.07.2007 в 02:23.
Zes вне форума  
Старый 16.08.2007, 13:07     # 11
dr-evil
::VIP::
 
Аватар для dr-evil
 
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212

dr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэйdr-evil Сэнсэй
а еще можно построить что-то вида
ps aux | grep process | awk
и получить искомое )
__________________
Сеть - это диагноз... а сисадмин - состояние души.
Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему!
dr-evil вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:24.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.