LINUX.ORG.RU

Одеть в qt-шубку или другое


0

0

Прошу помощи, сам не программист, паскаль, немножко си, delphi вообщем не важно. Есть pptp соединение написанное скриптом, мне не трудно каждый раз вызывать его с консоли, но так как я уезжаю у меня дома остается юзер, который будет испытывать проблемы с пользованием консолью, поэтому хотелось бы попробовать нарисовать формочку с двумя кнопочками и окошком отображающем ход подключения. В одну кнопку запихать /usr/sbin/pppd call cityline, а во вторую killall pppd. И как то выводить присутсвие отсутсвие коннекта в тектовое поле. Еще такая проблема подключение вызывается только от root, то есть предварительно в консоли я делаю sudo -i. Вообщем посоветуйте что использовать и ткните в сылочки. Заранее Вам спасибо.

★★★★★

radws% apt-cache search ppp
gnome-ppp - modem internet connection tool for the GNOME Desktop
gpppon - graphical wrapper around pon and poff
guessnet - Guess which LAN a network device is connected to
knet - The Knet is a frontend to pppd.
kppp - modem dialer for KDE 4


часть поскипана

wfrr ★★☆
()
Ответ на: комментарий от wfrr

KDE3 не охото мне все это ставить, перезапишут еще мои конфиги. Неужто сложно нарисовать для pppd call и killall pppd две кнопки, мне на них надо просто написать "ЖМИ СЮДА И БУДЕТ ИНТЕРНЕТ" и "ИНТЕРНЕТ ЗАКОНЧЕН". ?

splinter ★★★★★
() автор топика
Ответ на: комментарий от wfrr

И второе, эти решения не подходят, так как есть скрипт который добавляет и удаляет маршруты при соединении с pptp ( defaultroute тут не при чем) а всякие там kpvnc этого не понимают.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Предлагаю альтернативное решение. Запихнуть скрипт в rc.local. Одна беда: если поломать маршруты или соединения по какой-то причине при старте не случиться (например по вине провайдера), то придётся перезагружать комп.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

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

splinter ★★★★★
() автор топика

зависимости: perl-tk

#!/usr/bin/perl
use warnings;
use strict;
use utf8;
use Tk;

my $mw = MainWindow->new(-title => 'херня');
my $label = $mw->Label(-text => 'Интернет')->pack;
$mw->Button(
    -text    => 'Включить',
    -command => \&start
)->pack;
$mw->Button(
    -text => 'Выключить',
    -command => \&stop
)->pack;
MainLoop;

sub start {
    system('touch sfss &');
    $label->configure(-text => 'Включено')
}

sub stop {
    system('rm sfss');
    $label->configure(-text => 'Выключено')
}

PoMbl4
()
Ответ на: комментарий от anonymous

ну и что Kommander, с таким же успехом можно было написать Kdevelop :)
Пробовал в коммандере через ScriptObject, вписывал туда подключение, но ничего не происходило и про ошибки тоже ничего не говорило :( говорю ж хреновый с меня программист :)

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Тогда можно попробовать либо научить юзера запускать скрипт, либо самому быстро научиться скажем kdialog. Его вполне должно хватить для простенького интерфейса к скрипту. Тянет kdelibs.

KblCb ★★★★★
()

Добавь две кнопки на панели гнома/кде, которые будут выполнять эти команды. Или два десктоп-файла на рабочий стол.

Более продвинутый вариант: сделать bash-скрипт, который будет гуй делать через zenity или kdialog.

Дарю скрипт:

#! /bin/sh

R=$(zenity --list --column=Action --text=Select\ action Inet\ on Inet\ off)

if [ x"$R" == 'xInet on' ] ; then

echo ON

fi

if [ x"$R" == 'xInet off' ]; then

echo OFF

fi

ccoder
()

#!/bin/bash
kdialog --menu "надо выбрать" "$(echo пользователь выбрал первое)" первое "$(echo пользователь выбрал второе)" второе

Это по нашему, по тулкитофобски.

KblCb ★★★★★
()
Ответ на: комментарий от PoMbl4

Can't locate Tk.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i486-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl .) at cityline.pl line 5.
BEGIN failed--compilation aborted at cityline.pl line 5.

Странно, стоит Tk 5.8.8, а не компилит.

splinter ★★★★★
() автор топика
Ответ на: комментарий от ccoder

спасибо, zenity это что то гткшное, у меня могут быть проблемы с зависимостями, ОС Slackware.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

> Странно, стоит Tk 5.8.8, а не компилит.

perl-tk -- это не tk.

gaa ★★
()

> Еще такая проблема подключение вызывается только от root, то есть предварительно в консоли я делаю sudo -i. Вообщем посоветуйте что использовать и ткните в сылочки. Заранее Вам спасибо.

настрой sudoers

gaa ★★
()
Ответ на: комментарий от KblCb

Это бы прекрасно подошло, но у меня соединение устанавливается из под root, если я укажу в скрипте sudo -i, то он не запустить дилок так как но коннект x server.

splinter ★★★★★
() автор топика
Ответ на: комментарий от gaa

настроен, splinter ALL=(ALL) ALL
Jan 6 20:52:19 bastilie sudo: splinter : TTY=pts/7 ; PWD=/home/splinter/Desktop ; USER=root ; COMMAND=/etc/rc.d/rc.cityline start
Jan 6 20:52:24 bastilie pppd[15604]: pppd 2.4.4 started by root, uid 0
Jan 6 20:52:24 bastilie pppd[15604]: Using interface ppp0
Jan 6 20:52:24 bastilie pppd[15604]: Connect: ppp0 <--> /dev/pts/4
Jan 6 20:52:24 bastilie pppd[15604]: Modem hangup
Jan 6 20:52:24 bastilie pppd[15604]: Connection terminated.
Jan 6 20:52:24 bastilie pppd[15604]: Exit.
Под рутом:
Jan 6 20:54:08 bastilie pppd[15628]: pppd 2.4.4 started by root, uid 0
Jan 6 20:54:08 bastilie pppd[15628]: Using interface ppp0
Jan 6 20:54:08 bastilie pppd[15628]: Connect: ppp0 <--> /dev/pts/4
Jan 6 20:54:08 bastilie pptp[15629]: anon log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Jan 6 20:54:08 bastilie pptp[15635]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Jan 6 20:54:08 bastilie pptp[15635]: anon log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply
Jan 6 20:54:08 bastilie pptp[15635]: anon log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established.
Jan 6 20:54:09 bastilie pptp[15635]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
Jan 6 20:54:09 bastilie pptp[15635]: anon log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply.
Jan 6 20:54:09 bastilie pptp[15635]: anon log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 27904).
Jan 6 20:54:09 bastilie pppd[15628]: CHAP authentication succeeded
Jan 6 20:54:09 bastilie pppd[15628]: local IP address 192.168.3.10
Jan 6 20:54:09 bastilie pppd[15628]: remote IP address 1.1.1.1
Jan 6 20:54:09 bastilie pppd[15628]: primary DNS address 80.92.202.33
Jan 6 20:54:09 bastilie pppd[15628]: secondary DNS address 80.92.202.33

Под рутом запускается, под юзером не хочет :(

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Не понял проблемы? visudo и расшарь юзеру всё что ему надо (в слаке по дефолту там что-то написано, но всё закоментировано, можно написать используя то что есть в качестве примера, а можно просто раскоментировать строчку для группы wheel и закинуть в эту группу юзера). И будет тебе счастье.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Скрипт на запуск pptp
#!/bin/bash

start() {
`killall pppd` >> /dev/null &
sleep 5
`/usr/sbin/pppd call cityline`;
sleep 5
INFACE=`tail -10 /var/log/messages | grep 'local IP address'|awk '{ print $9 }'`
ETHFACE=`tail -10 /var/log/messages | grep 'Connect:'|awk '{print $7}'`
echo > /var/tmp/pptp.int
echo $ETHFACE $INFACE >>/var/tmp/pptp.int
echo "Cityline started via $INFACE $ETHFACE"




}

stop() {

ETHFACE=`cat '/var/tmp/pptp.int'|awk '{ print $2 }'`
ifconfig $ETHFACE down
rm -f pptp.int
echo "Cityline stoped via $INFACE $ETHFACE"
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 5
start
;;
*)
echo $"Usage: $prog {start|stop|restart}"
esac

exit

Я его еще до конца не доделал :)

splinter ★★★★★
() автор топика

Коннект должен быть постоянно?
Если да, то можно написать простенький скрипт вида

ping -c 1 google.com||(killall pppd&&/usr/sbin/pppd call cityline)

и запихнуть в крон на каждые 5 минут
минус - срёт на мыло root'у

anonymous
()
Ответ на: комментарий от KblCb

Я не знаю почему, даже когда я даю права юзеру на /usr/bin/pppd он ругается что pppd может запускать only root id0.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

>As establishing a PPP link between you Linux computer and another PPP server requires manipulation of network devices (the PPP interface is a network interface) and the kernel routing table, pppd requires root privileges

негоже простому юзеру создавать интерфейсы и править таблицу маршруатизации

anonymous
()
Ответ на: комментарий от anonymous

ну закончаться деньги на счету, все таки в норильске инет стоит за мб 2 деревянных, и будет он каждые 5 минут пытаться попусту создать впн соединение?

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Ну да. А в чем проблема? Сомневаюсь, что попытка создания vpn кушает много ресурсов, сервер провайдера ты таким способом заддосить тоже не сможешь(мне мой не жаловался).
Совсем правильно было бы дополнительно написать скрипт который ходит на страницу статистики и проверяет остаток на счету, но я не умею(да и лень пока что)

anonymous
()
Ответ на: комментарий от anonymous

неужто так сложно нарисовать две кнопки, по нажатию на одну из них делать sudo -i, passwd, /usr/sbin/pppd call cityline, а на другую повесить killall pppd?

splinter ★★★★★
() автор топика

или совсем очевидное - создать на рабочем столе файл, назвать его 'интернет', записать внутрь 'sudo /usr/sbin/pppd call cityline&'(без кавычек), сделать ему chmod +x и сказать юзеру 'тыкать сюда'
это если в sudoers есть соответствующие разрешения

anonymous
()
Ответ на: комментарий от splinter

Если придумаешь как неинтерактивно передать sudo -i пасворд то всё будет просто. А вообще юззер у которого расшарено столько прав по моему уже root. Так что проще сказать ему рутовый пароль пока он его сам не поменял. Да и kdesu в природе есть.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

> Если придумаешь как неинтерактивно передать sudo -i пасворд то всё будет просто.

Во-первых, есть expect.
Во-вторых, нахрена нужен ключ -i?

gaa ★★
()
Ответ на: комментарий от gaa

>Во-вторых, нахрена нужен ключ -i?

Человек говорит что скрипт пускается только под рутом. Может быть и вру, но последний впн, что я подымал вроде бы запускался судоверищем. Про expect узнал только что. К сожалению о tcl я знаю только две вещи: ты на нём написал лоросмотрелку и при установке слаки пакетами серии t можно пренебречь.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

>> Во-вторых, нахрена нужен ключ -i?
> Человек говорит что скрипт пускается только под рутом


У меня pptp работает через sudo, но без необходимости в -i.

Вот мой /etc/ppp/peers/$providername

noauth
pty "sudo pptp servername --nolaunchpppd"
debug
defaultroute
user username
password secret
updetach
#usepeerdns
nopersist
nodeflate
novj
nobsdcomp

При этом в /etc/sudoers записано:

%dip ALL=NOPASSWD: /usr/sbin/pptp


И всё работает через "pon $porvidername" безо всяких проблем.

gaa ★★
()
Ответ на: комментарий от gaa

Мне тоже казалось что всё прекрасно работало и без рута. Хотя в моём случае приходилось активно править роутинги. А кто такие pon и poff? В слаке их нет и я как-то без них обходился.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Я ж говорю же что sudo /etc/rc.d/rc.cityline не отрабатывает, я привел /var/log/messges в обоих случаях, не знаю почему так происходит.

splinter ★★★★★
() автор топика
Ответ на: комментарий от KblCb

> А кто такие pon и poff? В слаке их нет и я как-то без них обходился.

Это обёртки к pppd call и kill pppd. Дебиановские.

gaa ★★
()
Ответ на: комментарий от splinter

> Я ж говорю же что sudo /etc/rc.d/rc.cityline не отрабатывает

Посмотри внимательно, _куда_ в моём случае вписан вызов sudo.

gaa ★★
()
Ответ на: комментарий от splinter

Попробуй сделать так как сказал gaa и отпишись о результате. Если ничего не получится надо думать обёртку вокруг sudo.

KblCb ★★★★★
()
Ответ на: комментарий от gaa

$ sudo /usr/sbin/pppd call cityline

Jan 7 02:25:05 bastilie sudo: splinter : TTY=pts/7 ; PWD=/home/splinter/Desktop ; USER=root ; COMMAND=/usr/sbin/pppd call cityline
Jan 7 02:25:05 bastilie pppd[17418]: pppd 2.4.4 started by root, uid 0
Jan 7 02:25:05 bastilie pppd[17418]: Using interface ppp0
Jan 7 02:25:05 bastilie pppd[17418]: Connect: ppp0 <--> /dev/pts/4
Jan 7 02:25:05 bastilie pppd[17418]: Modem hangup
Jan 7 02:25:05 bastilie pppd[17418]: Connection terminated.
Jan 7 02:25:05 bastilie pppd[17418]: Exit.
Соединения нет, айпи нет.

$ sudo -i
$ /usr/sbin/pppd call cityline
Jan 7 02:28:13 bastilie pppd[17472]: pppd 2.4.4 started by root, uid 0
Jan 7 02:28:13 bastilie pppd[17472]: Using interface ppp0
Jan 7 02:28:13 bastilie pppd[17472]: Connect: ppp0 <--> /dev/pts/4
Jan 7 02:28:13 bastilie pptp[17473]: anon log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Jan 7 02:28:13 bastilie pptp[17478]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Jan 7 02:28:13 bastilie pptp[17478]: anon log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply
Jan 7 02:28:13 bastilie pptp[17478]: anon log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established.
Jan 7 02:28:14 bastilie pptp[17478]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
Jan 7 02:28:14 bastilie pptp[17478]: anon log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply.
Jan 7 02:28:14 bastilie pptp[17478]: anon log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 50176).
Jan 7 02:28:14 bastilie pppd[17472]: CHAP authentication succeeded
Jan 7 02:28:14 bastilie pppd[17472]: local IP address 192.168.3.40
Jan 7 02:28:14 bastilie pppd[17472]: remote IP address 1.1.1.1
Jan 7 02:28:14 bastilie pppd[17472]: primary DNS address 80.92.202.33
Jan 7 02:28:14 bastilie pppd[17472]: secondary DNS address 80.92.202.33
Соединение есть.

cat /etc/sudoers
splinter ALL=(ALL) ALL
%users ALL=NOPASSWD: /usr/sbin/pptp
%users ALL=NOPASSWD: /usr/sbin/pppd

cat /etc/groups | grep splinter
disk:x:6:root,adm,splinter
audio:x:17:root,splinter
video:x:18:root,splinter
cdrom:x:19:root,splinter
plugdev:x:83:root,splinter
users:x:100:splinter
vboxusers:x:102:splinter

splinter ★★★★★
() автор топика
Ответ на: комментарий от anonymous

cat /etc/passwd|grep root
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/li b/java/bin:/usr/lib/java/jre/bin:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/li b/qt/bin:/usr/share/texmf/bin: Нет такого файла или каталога
sudo $PATH
sudo: /usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin :/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:/usr/share/texmf/bin:.: command not found
$PATH
-bash: /usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/li b/java/bin:/usr/lib/java/jre/bin:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/li b/qt/bin:/usr/share/texmf/bin: Нет такого файла или каталога

splinter ★★★★★
() автор топика
Ответ на: комментарий от gaa

root@bastilie:~# cat /etc/ppp/peers/cityline
# written by pptpsetup
pty "pptp vpn.wlan --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
defaultroute
usepeerdns
name XXXXXXXXXXXX
remotename cityline
ipparam cityline

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

В sudo $PATH не наблюдается, вроде, каталога /usr/sbin, в котором лежит pptp, так? В то же время, при вызове sudo -i в $PATH каталог /usr/sbin появляется. В связи с этим, дурацкий вопрос: а что если строчку
pty "pptp vpn.wlan --nolaunchpppd"
заменить на
pty "/usr/sbin/pptp vpn.wlan --nolaunchpppd" ?

Sergius256
()
Ответ на: комментарий от gaa

$ /usr/sbin/pppd call cityline
Jan 7 04:45:06 bastilie pppd[18092]: pppd 2.4.4 started by splinter, uid 1000
Jan 7 04:45:06 bastilie pppd[18092]: Using interface ppp0
Jan 7 04:45:06 bastilie pppd[18092]: Connect: ppp0 <--> /dev/pts/4
Jan 7 04:45:32 bastilie pppd[18106]: pppd 2.4.4 started by splinter, uid 1000
Jan 7 04:45:32 bastilie pppd[18106]: Using interface ppp1
Jan 7 04:45:32 bastilie pppd[18106]: Connect: ppp1 <--> /dev/pts/6
Jan 7 04:45:37 bastilie pppd[18092]: Connection terminated.
Jan 7 04:45:43 bastilie pppd[18112]: pppd 2.4.4 started by splinter, uid 1000
Jan 7 04:45:43 bastilie pppd[18112]: Using interface ppp2
Jan 7 04:45:43 bastilie pppd[18112]: Connect: ppp2 <--> /dev/pts/8
ничего.
под sudo -i:
Jan 7 04:47:05 bastilie sudo: splinter : TTY=ptmx ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/pptp vpn.wlan --nolaunchpppd
Jan 7 04:47:05 bastilie pptp[18142]: anon log[main:pptp.c:314]: The synchronous pptp option is NOT activated
Jan 7 04:47:05 bastilie pptp[18147]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request'
Jan 7 04:47:05 bastilie pptp[18147]: anon log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply
Jan 7 04:47:05 bastilie pptp[18147]: anon log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established.
Jan 7 04:47:06 bastilie pppd[18121]: Connection terminated.
Jan 7 04:47:06 bastilie pptp[18147]: anon log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request'
Jan 7 04:47:06 bastilie pptp[18147]: anon log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply.
Jan 7 04:47:06 bastilie pptp[18147]: anon log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 6784).
Jan 7 04:47:06 bastilie pppd[18140]: CHAP authentication succeeded
Jan 7 04:47:06 bastilie pppd[18140]: local IP address 192.168.3.34
Jan 7 04:47:06 bastilie pppd[18140]: remote IP address 1.1.1.1
Jan 7 04:47:06 bastilie pppd[18140]: primary DNS address 80.92.202.33
Jan 7 04:47:06 bastilie pppd[18140]: secondary DNS address 80.92.202.33
все ок.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Блин… Короче, из-под sudo pppd запускается _уже_ с рутовыми правами. Правда, при этом все окружение остается от пользователя. Об этом говорит переменная $PATH, в которой напрочь отсутствуют /sbin, /usr/sbin. Что написано в peers/cityline? Там дословно написано "выполнить команду такую-то (pptp)". Права на запуск у нас в этот момент уже есть, поскольку pppd запущен от рута. Только _окружение_ у нас осталось от пользователя, и pptp ищется в пользовательском $PATH, где его нифига нет.

Что происходит при вызове sudo -i? Пользователь получает рутовый шелл с _рутовым_ окружением. В связи с чем pppd не должен через астрал догадываться о местоположении pptp - он _будет_ в $PATH, что мы и видим тут: COMMAND=/usr/sbin/pptp vpn.wlan --nolaunchpppd

В связи с этим, мне сильно крепко имхается, что следует железобетонно прописать полный путь к pptp в peers/cityline.

Sergius256
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.