Strona 1 z 1

Skrypt w bashu do automatycznego uruchamiania modemu 3g

: 27 grudnia 2010, 11:11
autor: tomekw
Myślę, że skrypt posłuży wszystkim użytkownikom takich modemów.
Słowem wstępu, modem jest zainstalowany przy pomocy instrukcji stąd:
http://www.bez-kabli.pl/viewtopic.php?t=23432
wywołuje go poleceniem:

Kod: Zaznacz cały

wvdial 1234
teraz chciałem napisać skrypt, który automatycznie będzie:
  1. Co chwilę sprawdzał, czy modem jest podłączony i wykryty.
  2. Jeżeli nie, to dalej sprawdza.
  3. Jeżeli tak, to wywołuje wspomniane polecenie i sam się łączy z internetem.
  4. Po odpięciu modemu wraca do 1.
Pierwszą część udało się osiągnąć (sprawdzanie czy modem istnieje):

Kod: Zaznacz cały

ls -la /dev/ttyU*
teraz skrypt, i tu zaczynają się schody:

Kod: Zaznacz cały

#!/bin/bash
wyn = ls -la /dev/ttyU*
if [ "$wyn" -eq "1" ]
then echo "Wykrywa"
else echo "NIe wykrywa"
fi
exit 0
Proszę nie zapatrywać się teraz na drugą część, chodzi mi o sam warunek if,
chciałem by:

Kod: Zaznacz cały

if [ ls -la /dev/ttyU* = "prawda" ]
jeżeli [ modem = jest wykryty ]
i nie wiem jak wprowadzić takie coś.
Próbowałem też samo polecenie:

Kod: Zaznacz cały

 ls -la /dev/ttyU* 
wprowadzić jako oddzielny skrypt, niestety bezskutecznie.
Jak zrobić powyższą zależność?

: 27 grudnia 2010, 14:36
autor: mariaczi
Wykorzystaj przełącznik "-f" dla instrukcji if. Przy jej użyciu musisz podać dokładną nazwę pliku.

: 27 grudnia 2010, 20:21
autor: lessmian2
"-f" nie zadziała, bo /dev/ttyUSB* jest urządzeniem blokowym, a nie plikiem. Za to "-e" powinno być ok ;)

: 27 grudnia 2010, 23:44
autor: panel
Najpierw sprawdziłbym co zwraca po komendzie

Kod: Zaznacz cały

ls -la /dev/ttyU*
echo $?
potem można próbować dalej

Kod: Zaznacz cały

#!/bin/bash
ls -la /dev/sda6
if [ "$?" != "0" ]; then
echo NO
else
echo OK
fi

: 28 grudnia 2010, 08:45
autor: lessmian2
panel, ale po co kombinować z ls'em, skoro są lepsze rozwiązania (wymienione wcześniej testy bashowe)?

: 28 grudnia 2010, 10:48
autor: tomekw
Teraz nie mam dostępu do modemu, będę testował wieczorem, ewentualnie jutro, mam nową formę:

Kod: Zaznacz cały

#!/bin/bash
wyn = ls -la /dev/ttyU*
if [ "$wyn" != "0" ]
then echo "Jest"
else echo "Nie ma"
fi
Forma niestety nie działa, o ile sam if (chyba) nie jest zły, bardziej mnie martwi zmienna, czy odczyt.
@panel, próbowałem twoje, niestety zwraca błąd:

Kod: Zaznacz cały

ls: nie ma dostępu do /dev/ttyU*: NIe ma takiego pliku ani katalogu
2
OK
Czyli polecenie ls można sobie chyba darować.
...
Jeszcze próbowałen na inne sposoby, najważniejsze jest pobranie informacji, if nie będzie taki trudny jak to.
Przepraszam za rozwlekłość.

: 28 grudnia 2010, 20:59
autor: lessmian2

Kod: Zaznacz cały

[lessmian@pyrtek ~]$ ls -al /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 0 12-28 19:56 /dev/ttyUSB0
[lessmian@pyrtek ~]$ if [ -e /dev/ttyUSB0 ]; then echo dziaua; else echo 'nie dziaua';fi
dziaua
[lessmian@pyrtek ~]$ ls -al /dev/ttyUSB3
ls: nie ma dostępu do /dev/ttyUSB3: Nie ma takiego pliku ani katalogu
[lessmian@pyrtek ~]$ if [ -e /dev/ttyUSB3 ]; then echo dziaua; else echo 'nie dziaua';fi
nie dziaua
Kombinujecie Pany ;)

: 01 lutego 2011, 05:34
autor: tomekw
Skrypt w przygotowaniu, piszę byście Panowie wiedzieli, że projekt nie umarł.
Bardzo dziękuję lessmian2, bardzo pomogłeś. Skrypt jak ukończę robić, to umieszczę wersję ostateczną tutaj.
Pozdrawiam!

Edycja:
Szybciej to poszło niż myślałem jak się za niego wziąłem. Generalnie skrypt jest gotowy, ale ma jedną wadę (tu liczę na waszą pomoc).
Kod skryptu:

Kod: Zaznacz cały

#!/bin/bash
echo "Script by [email][email protected][/email]"
if [ -e /dev/ttyUSB0 ]
then
echo "Is work"
wvdial 1234
/home/tomek/modem_auto.sh
else
echo "Is Work not"
sleep 5
/home/tomek/modem_auto.sh
fi
exit 0
Problem jest z uruchamianiem tego przy starcie systemu, mianowicie, jak skopiuje to do /etc/init.d i dodam do rc.d poleceniem

Kod: Zaznacz cały

update-rc.d modem_auto.sh defaults
skrypt się nazywa modem_auto.sh, to podczas uruchamiania zaczyna mi skrypt wykonywać i nie chce się dalej system ładować. Sam też nie wiem, czy takie działanie skryptu jak obecnie nie jest mało wydajne (czy nie lepiej by było zrobić, by skrypt działał w tle.
Chciałem od razu zaznaczyć, że nie chodzi tutaj o ścieżkę, bo tą można w każdej chwili zmienić, ale właśnie dlaczego zamiast uruchamiać się cicho, to zaczyna cały skrypt odpalać podczas uruchamiania?
Pozdrawiam,
Tomek

: 01 lutego 2011, 09:13
autor: Bodzio
Sprawa jest rozwiązana, proszę przeczytać ten wątek: http://dug.net.pl/tekst/132/huawei_e122 ... modemu_3g/

W artykule jest sporo informacji na temat obsługi modemów 3G (nie tylko tego konkretnego)
Jest rozwiązane doładowywanie konta, sms-y, wykorzystanie wammu i gammu.
Myślę że dobry gotowiec :)