Interakcja ze zdalną „powłoką” ze skryptu w tle za pomocą SSH

0

Muszę naśladować poniższy skrypt za pomocą skryptu wywoływanego przez usługę internetową uruchamianą z serwera Linux:

  • Uzyskaj dostęp do zdalnego serwera AIX za pośrednictwem SSH
  • Zaloguj się do instancji pamięci podręcznej Intersystems (jeśli to nie jest znane, udawaj, że ładujemy interaktywne środowisko Pythona lub Rubiego [irb])
  • Wykonywać polecenia
  • Wykonaj więcej poleceń w zależności od wyników poprzednich poleceń
  • Rejestruj wszystkie dane wejściowe i wyjściowe z tego środowiska

Jest to dość proste w C # z biblioteką SSH.NET. Otwórz shellstream na zdalnym hoście, dołącz StreamReader i StreamWriter, a następnie wyślij dane wejściowe do połączenia SSH przez StreamWriter i odczytaj z niego dane wyjściowe poprzez StreamReader.

Jak mam to zrobić na serwerze Linux z ssh? Eksperymentuję z ekranem, ale wydaje się, że jest bardziej zaprojektowany do użytku interaktywnego niż skryptów i zastanawiam się, czy nie szczekam niewłaściwego drzewa.

Nie mam kontroli nad tym, co jest zainstalowane na serwerze AIX. Mogę uzyskać tam zainstalowane rzeczy, ale bez gwarancji.

Znacznie późniejsza edycja: możliwe rozwiązania obejmują pexpect / pxssh (Python), paramiko (także Python)

wilee
źródło
2
czy sprawdziłeś expect lub pexpect (python)?
chaput
1
Chociaż to pytanie jest idealnie na temat i zapraszamy do pozostania tutaj, w naszej siostrzanej witrynie jest znacznie więcej użytkowników Uniksa Unix i Linux . Jeśli po jakimś czasie nie otrzymasz użytecznej odpowiedzi, rozważ zgłoszenie tego do moderatora i poproś o jego migrację.
terdon

Odpowiedzi:

0

Tak, ekran nie jest drogą. Nie wiem o tym cache ale czy możesz napisać do niego skrypt lub zrobić to potrzeba interaktywna powłoka? Jeśli możesz napisać skrypt i zapisać go na komputerze AIX, powinieneś to zrobić

ssh [email protected] /path/to/cache_script

Innym podejściem byłoby użycie expect dostępny również w systemie AIX, ale nie mogę podać więcej szczegółów bez znajomości poleceń, które trzeba uruchomić. W każdym przypadku, expect umożliwia wysyłanie poleceń i odpowiadanie na dane wyjściowe, interakcję z interaktywną powłoką w sposób nieinteraktywny.

terdon
źródło
pexpect i pxssh wyglądają na magiczne i dobrze to przetestują. Nie trzeba uruchamiać niczego (nawet oczekiwać) na zdalnym hoście. Dziękuję za odpowiedzi obu osób.
wilee