Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam mam mały problemik ze skryptem pisanym za pomocą expecta. Mianowicie chcę odpalić serwer Sun'a (serwer backupów) , automatycznie zrobić backup, skopiować na serwer backupów i wyłączyć Suna. Wszystko mi działa bez małego pierdnięcia gdy odpalam skrypt będąc zalogowanym poprzez ssh na webserwerze.
Jednak, gdy nie jestem połączony z webserwerem i skrypt usuchamia się z crona, po przekierwaniu outputu do pliku dostaję
spawn minicom poweron No cursor motion capability (cm)
Rozumiem komunikat, expect czeka na ruch kursora, więc moje pytanie jest następujące : Czy istnieje w expectcie opcja pozwalająca uruchomić skrypt w ten sposób, aby nie czekał on na ruch kursora tylko działał wewnątrznie tzn. nie patrząc na standardowe wyjście ??
Całość się dokonuje na webserver (CentOS), backup (FreeBSD).
Pozdrówki.
Offline
Jak jesteś zalogowany przez ssh i uruchamiasz skrypt, to "leci" sam bez nawet jednego naciśnięcia jakiegokolwiek klawisza?
Bo tego co sie domyślam to uruchamiasz mincoma, a jak dobrze pamiętam to minicom po uruchomieniu wyświetla menu z którego wychodzi się naciśnięciem klawisza enter, masz w skrypcie wysłanie naciśnięcia klawisza enter do minicoma?
PS. Expect jest właśnie po to by "udawał" użytkownika reagując na komunikaty na terminalu (np. masz firmową aplikacje do backupu, która po uruchomieniu wymaga naciśnięcia klawiszy b potem o i np. r a po wyświetleniu "Done" trzeba nacisnąć q aby wyjść) , w pozostałych przypadkach da się to załatwić normalnymi skryptami powłoki.
Offline
właśnie jak uruchamiam z palca to Sun mi startuje , kopia się robi na webserwerze, scp ... i Sun się wyłącza .... tak nie dotykam go, tylko uruchamiam i chodzi o to żeby wrzucić to do crona ..a ze zwykłym skryptem to jest problem bo nie wiem jak wejść w LOM-a :(
Offline
Jest jeszcze autoexpect, generuje skrypt expecta na podstawie interakcji użytkownika - w praktyce wygenerowany skrypt wymaga poprawy, bo nie zawsze chce działać. Spróbuj wygenerować nowy skrypt, może jak porównasz obydwa, stary i nowy, to coś się wyjaśni.
Offline
No spróbowałem autoexpecta i masiakra :D cały rozruch FreeBSD mi wrzucił do swojego skryptu :D .
Mam może inne pytanie :P : jak włączyć serwer Suna korzystając ze skryptu pisanego w czystym bashu czy innej, dowolnej powłoce ?
Pozdrówki.
Offline
jaki serwer konkretnie bo Sun stosowal rozne typy zaradzania wbudowanego i to od tego bedzie troche zalezec ... mozesz tez pokazac to co napisales w tym skrypcie ...
Offline
całość skałda się z trzech skryptów, bo gdy wrzucałem wszystko do jednego to głupiało ...
start_backup
#!/bin/bash clear expect -c " spawn minicom send "poweron"\r expect eof " exec /root/skrypty/2weeks
2weeks
#!/bin/bash clear teraz=`date | sed -e 's/ /_/g' | sed -e 's/:/_/g'` tar czf $teraz.tar /root/skrypty/* { expect -c " sleep 120 spawn scp $teraz.tar ishido@192.168.0.1:/home/ishido sleep 30 expect "*word*" send "***********"\r sleep 60 expect eof " } exec /root/skrypty/poweroff
poweroff
#!/bin/bash clear expect -c " spawn minicom send "#."\r send "shutdown"\r sleep 30 send "poweroff"\r expect eof "
i to wszysto ...
Offline
Proponuje w pierwszym skrypcie po
spawn minicom
wstawić:
sleep 3 send \r
a dopiero potem:
send "poweron"\r
i dalszą część...
Offline
niestety efekt bez zmian
Ostatnio edytowany przez peeboy (2010-10-31 20:50:38)
Offline
mozna sprobowac z stty i echo -e "poweron\r" > /dev/tty... i puszczaniem komend robiacych backup po ssh ...
BTW masz jakies zamieszanie z " ... czesc z nich jest zjadana przez bash'a a raczej nie bylo to Twoim zamierzeniem ...
Offline
Wielkie dzięki za wskazówkę bercik wszystko cyka jak trza :
pierwszy skrypt :
#!/bin/bash clear echo -e "poweron\r" > /dev/ttyS0 exec /root/skrypty/2weeks
drugi skrypt bez zmian
trzeci skrypt :
#!/bin/bash clear echo -e "#.\r" > /dev/ttyS0 echo -e "shutdown\r" > /dev/ttyS0 sleep 60 echo -e "poweroff\r" > /dev/ttyS0 /root/skrypty/cleanup
Jeszcze raz wielkie dzięki za pomoc
Pozdrówki
Offline