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)
Odpowiedzi:
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ć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.źródło