piszę następujące oczekiwać skrypt w celu zautomatyzowania ssh logowanie do zdalnej maszynie Linux i uruchom komendę „cat /etc/APP_VERSION.txt plik”oczekiwać skrypt + jak ignorować ciągi jeśli nie pojawi
Sometime I nie pytano z polecenia ssh o:
"Are you sure you want to continue connecting (yes/no)?"
Tak więc w tym przypadku pierwsze oczekiwania nadal czekają na ciąg "(tak/nie)?" - :(
I nie kontynuować do sekundy spodziewać - "hasło:"
Jak rozwiązać ten problem,
To znaczy, jeśli linia „Czy na pewno chcesz kontynuować łączący (tak? ?/nie) „ Czy nie wynika z ssh
Następnie musimy przejść do następnego spodziewać«hasło:», ale jak to zrobić
remark1 - w przypadku pytania” Czy jesteś pewien, że chcesz kontynuować połączenie (tak/nie)? ", Pojawia się wtedy Oczekuję, że skrypt działa dobrze bez żadnego problemu. .
remark2 - Nie mogę korzystać z limitu czasu wartość dodatnią (jako Timeout 10), ponieważ sama ssh mają opóźnienie
. . . .
Moja oczekiwać skrypt: (ta spodziewać jest częścią mojego skryptu ksh)
.
.
.
APP_MACHINE=172.12.6.190
set timeout -1
spawn ssh $APP_MACHINE
expect {
"(Are you sure you want to continue connecting yes/no)?"
{ send "yes\r" }
}
expect password: {send PASS123\r}
expect > {send "cat /etc/APP_VERSION.txt\r"}
expect > {send exit\r}
expect eof
.
.
.
. . . . .
przykładem ssh z moim komputerze linux
ssh APP_MACHINE
The authenticity of host 'APP_MACHINE (172.12.6.190)' can't be established.
RSA key fingerprint is 1e:8a:3d:b3:e2:8c:f6:d6:1b:16:65:64:23:95:19:7b.
Are you sure you want to continue connecting (yes/no)?
Niestety nie mogę tego użyć, ponieważ jakiś czas ssh sam ma połączenie czasowe - czasami jest to 5 lub 10 sekund, które wiedzą? - To nie jest dobre rozwiązanie dla mnie przepraszam, to musi być inne rozwiązanie !!! –
W każdym razie nie jest to dobry pomysł, ponieważ moja aplikacja musi działać szybko, bez żadnych opóźnień ze skryptu oczekujacego. –
Dodaję ciąg exp_continue podczas wyświetlania tutaj, ale nadal jest zablokowany. –