Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest piątek, 19 kwietnia 2024, 21:48

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 7 ] 
Autor Wiadomość
 Tytuł: Skrypt
Post: czwartek, 7 sierpnia 2008, 15:08 
Offline
Użytkownik

Rejestracja: piątek, 18 marca 2005, 10:25
Posty: 274
Lokalizacja: Sandomierz
Witam. Czy mógłby mi ktoś pomów w wykonaniu skryptu generującego dialplan dla potrzeb asteriska ?
Ma to działać na tej zasadzie:
podaję plik tekstowy z wykazem mumeracji danego operatora, na przykład:
Cytuj:
022310
032311
041312
.
.
.

po uruchomieniu skryptu wygenerowany zostanie plik z dialplanem dla asteriska w postaci:
Cytuj:
exten => _022310X.,1,Dial(SIP/${EXTEN}@out-oper1)
exten => _022310X.,2,Hangup

exten => _032311X.,1,Dial(SIP/${EXTEN}@out-oper1)
exten => _032311X.,2,Hangup

exten => _041312X.,1,Dial(SIP/${EXTEN}@out-oper1)
exten => _041312X.,2,Hangup
.
.
.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 7 sierpnia 2008, 15:41 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
: [/] [] ()
# !/bin/sh

if [ $# -lt 2 ]; then
   echo "Nieprawidłowa liczba argumentów."
   echo "Sposób użycia: "
   echo "$0 /sciezka/plik_z_numeracją /sciezka/dialplan"
   echo "Kończę."
   exit 1
fi

[ -f $1 ] || echo "Plik $1 nie istnieje. Kończę" && exit 1

[ -f $2 ] && mv $2 $2.old

while read line; do

echo "exten => _${line}X.,1,Dial(SIP/\${EXTEN}@out-oper1)" >> /sciezka/dialplan
echo "exten => _${line}X.,2,Hangup" >> /sciezka/dialplan

done < $1


Nie testowane!
Zwróć uwagę na ${EXTEN} - znak dolara musi być poprzedzony backslashem aby zapobiec interpretowaniu tego wyrażenia jako zmiennej. Może być konieczne (choć nie sądzę), że inne znaki trzeba będzie poprzedzić backslashem.
Script wymaga dwóch parametrów w określonej kolejności - ścieżka do pliku z numeracją i ścieżka do pliku dialplanu. Jesli plik dialplanu istnieje jego nazwa zostaje zmieniona na dialplan.old i nowy plik dialplan jest generowany.
W pliku z numeracją niedopuszczalne są komentarze, a każdy numer musi być w osobnej linii, bez spacji/tabulatorów na początku i końcu numeru. Plik ten powinien kończyć się pustą linią.

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 7 sierpnia 2008, 16:10 
Offline
Użytkownik

Rejestracja: piątek, 18 marca 2005, 10:25
Posty: 274
Lokalizacja: Sandomierz
Dzięki Mis' za szybką reakcję.

Uruchomiłem skrypt poleceniem
./generator /home/kat_dom/numeracja /home/kat_dom/dialplan

generator - plik ze skryptem
numeracja - wykaz numeracji
dialplan - wynikowy plik z dialplanem

Nic nie tworzy w pliku o nazwie dialplan, plik jest czysty.

Możesz pomóc mi ??

Edit.

Troszeczkę czasu poświęciłem i udało mi się coś wymyśleć.

Dzięki za wsparcie kodem skryptu.

Pozdrwiam
Marcin


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 7 sierpnia 2008, 21:13 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
marcin w pisze:
Uruchomiłem skrypt poleceniem
./generator /home/kat_dom/numeracja /home/kat_dom/dialplan

Nic nie tworzy w pliku o nazwie dialplan, plik jest czysty.


Jesli sobie poradziłeś to napisz gdzie był błąd. Jak mówię, nie testowałem tego...

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 7 sierpnia 2008, 21:26 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
Zmień linię:

[ -f $1 ] || echo "Plik $1 nie istnieje. Kończę" && exit 1

na

if [ ! -f $1 ]; then
echo "Plik $1 nie istnieje. Kończę"
exit 1
fi

i powinno być dobrze. Przynajmniej na Twoich przykładach działa.

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 7 sierpnia 2008, 22:13 
Offline
Użytkownik

Rejestracja: piątek, 18 marca 2005, 10:25
Posty: 274
Lokalizacja: Sandomierz
Pozostawiłem tylko

Cytuj:
# !/bin/sh

while read line; do

echo "exten => _${line}X.,1,Dial(SIP/\${EXTEN}@out-oper1)" >> /sciezka/dialplan
echo "exten => _${line}X.,2,Hangup" >> /sciezka/dialplan

done < $1


Dzięki za wsparcie. Skrypt zaoszczędził mi około 2 dni pracy. Wygenerowanie dialplanu dla kilku operatorów VOIP (łącznie około 400 linii kodu) zajęło mi tylko 1 godzinę.


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: czwartek, 7 sierpnia 2008, 23:33 
Offline
Użytkownik

Rejestracja: niedziela, 9 kwietnia 2006, 10:14
Posty: 316
ciekawe rozwiązanie w/w problemu.
Ja najczęściej takie konwersje realizowałem przy pomocy excela i makr.
Muszę to zacząć stosować

_________________
PECTOSOL to lek wykrztuśny stosowany w nieżytach gardła, przy suchym, męczącym kaszlu.
>>Jak mądrze zadawać pytania<<


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 7 ] 

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 42 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl