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.


http://csn.homelinux.net

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]b[/b] potem [b]o[/b] i np. [b]r[/b] a po wyświetleniu [b]"Done[/b]" trzeba nacisnąć [b]q[/b] 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 :(


http://csn.homelinux.net

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.


http://csn.homelinux.net

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 :)


http://csn.homelinux.net

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

[b]start_backup[/b]

Kod:

#!/bin/bash

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

[b]2weeks[/b]

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

[b]poweroff[/b]

Kod:

#!/bin/bash

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

i to wszysto ...


http://csn.homelinux.net

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)


http://csn.homelinux.net

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ę [i]bercik[/i] 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


http://csn.homelinux.net

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00102 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.127.232' WHERE u.id=1
0.00070 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.127.232', 1714869439)
0.00043 SELECT * FROM punbb_online WHERE logged<1714869139
0.00067 SELECT topic_id FROM punbb_posts WHERE id=157509
0.00141 SELECT id FROM punbb_posts WHERE topic_id=17631 ORDER BY posted
0.00080 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=17631 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00121 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=17631 ORDER BY p.id LIMIT 0,25
0.00081 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=17631
Total query time: 0.00723 s