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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-10-30 17:00:33

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

expect

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ę

Kod:

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

 

#2  2010-10-30 17:49:40

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: expect

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

 

#3  2010-10-30 18:10:07

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

Re: expect

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

 

#4  2010-10-30 18:53:59

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: expect

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

 

#5  2010-10-30 20:35:54

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

Re: expect

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

 

#6  2010-10-31 00:27:24

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: expect

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 ...


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#7  2010-10-31 13:36:48

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

Re: expect

Netra T1 :)

Offline

 

#8  2010-10-31 13:47:00

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

Re: expect

całość skałda się z trzech skryptów, bo gdy wrzucałem wszystko do jednego to głupiało ...

start_backup

Kod:

#!/bin/bash

clear   
expect -c "
spawn minicom                  
send "poweron"\r
expect eof "
exec /root/skrypty/2weeks

2weeks

Kod:

#!/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

Kod:

#!/bin/bash

clear   
expect -c "
spawn minicom                  
send "#."\r
send "shutdown"\r
sleep 30
send "poweroff"\r
expect eof "

i to wszysto ...

Offline

 

#9  2010-10-31 19:23:09

  andreq - Członek DUG

andreq
Członek DUG
Skąd: Nisko
Zarejestrowany: 2005-01-11

Re: expect

Proponuje w pierwszym skrypcie po

Kod:

spawn minicom

wstawić:

Kod:

sleep 3
send \r

a dopiero potem:

Kod:

send "poweron"\r

i dalszą część...

Offline

 

#10  2010-10-31 20:50:17

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

Re: expect

niestety efekt bez zmian

Ostatnio edytowany przez peeboy (2010-10-31 20:50:38)

Offline

 

#11  2010-11-01 00:50:26

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: expect

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 ...


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#12  2010-11-02 18:31:12

  peeboy - Użytkownik

peeboy
Użytkownik
Skąd: Inowrocław
Zarejestrowany: 2006-03-30
Serwis

Re: expect

Wielkie dzięki za wskazówkę bercik wszystko cyka jak trza :
pierwszy skrypt :

Kod:

#!/bin/bash

clear   
echo -e "poweron\r" > /dev/ttyS0
exec /root/skrypty/2weeks

drugi skrypt bez zmian
trzeci skrypt :

Kod:

#!/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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)