Więc chciałem zautomatyzować moje loginy SSH. Host, z którym korzystam, nie zezwala na uwierzytelnianie klucza na tym serwerze, więc musiałem być bardziej pomysłowy.Logowanie SSH z oczekiwaniem (1). Jak wyjść i oczekiwać na SSH?
Nie znam się na skryptach powłoki, ale niektóre badania pokazały mi polecenie "oczekiwać" i niektóre skrypty używające go do tego celu. Przygotowałem skrypt i uruchomiłem go, działało idealnie, aby się zalogować.
#!/usr/bin/env expect -f
set password "my_password"
match_max 1000
spawn ssh -p 2222 "my_username"@11.22.11.22
expect "*?assword:*"
send -- "$password\r"
send -- "\r"
expect eof
Początkowo działa tak, jak powinien.
Last login: Wed May 12 21:07:52 on ttys002
esther:~ user$ expect expect-test.exp
spawn ssh -p 2222 [email protected]
[email protected]'s password:
Last login: Wed May 12 15:44:43 2010 from 20.10.20.10
-jailshell-3.2$
Ale tam kończy się sukces.
Polecenia nie działają, ale naciśnięcie klawisza Enter powoduje tylko utworzenie nowej linii. Klawisze strzałek i inne niealfanumeryczne klawisze tworzą symbole takie jak '^ [[C', '^ [[A', '^ [OQ' itp.] [1]
Nie pojawia się żaden inny monit z wyjątkiem dwóch początkowo utworzonych przez skrypt oczekiwania. Wszelkie ignorowane polecenia będą wykonywane przez moją lokalną powłokę, gdy tylko przekroczą limit czasu. Przykład:
-jailshell-3.2$ whoami
ls
pwd
hostname
(... Czas mija, oczekiwać razy na ...)
esther:~ user$ whoami
user
esther:~ ciaran$ ls
Books Documents Movies Public
Code Downloads Music Sites
Desktop Library Pictures expect-test.exp
esther:~ ciaran$ pwd
/Users/ciaran
esther:~ ciaran$ hostname
esther.local
Jak powiedziałem, nie mam doświadczenia skryptów powłoki, ale myślę, że to jest spowodowane tym, że Nadal "wewnątrz" oczekuję, ale nie "wewnątrz" SSH. Czy istnieje sposób, aby zakończyć, spodziewając się, że po zalogowaniu się mam przekazać mi sesję SSH?
Próbowałem już poleceń takich jak "zamknij" i "zakończ", po "send -" \ r "". Tak, robią, co chcę i oczekują śmierci, ale mściwie zabierają sesję SSH, zostawiając mnie z powrotem tam, gdzie zacząłem. To, czego naprawdę potrzebuję, to oczekiwać, że wykonam swoją pracę i zakończę, pozostawiając sesję SSH z powrotem w moich rękach, tak jakbym robił to ręcznie.
Cała pomoc jest doceniana, dzięki. [1] Wiem, że jest na to nazwa, ale nie wiem, co to jest. I jest to jedna z tych przerażających rzeczy, których nie można znaleźć w Google, ponieważ znaki interpunkcyjne są ignorowane. Jako pytanie uboczne, jaka jest ta historia?