Jak uruchomić polecenia w trybie wsadowym przez ssh? To znaczy, jaki jest odpowiednik ssh
polecenia sftp -b <filename> <hostname>
?
Mam zestaw poleceń, które chcę uruchomić na zestawie hostów łączących się ssh
. Na koniec sftp
przechowuję polecenia w pliku filename
i łączę się z hostem i uruchamiam polecenia za pomocą wcześniej wspomnianego polecenia.
Czy coś takiego jest możliwe ssh
?
Odpowiedzi:
Popraw mnie, jeśli się mylę, ale wydaje się, że chcesz uruchamiać regularne polecenia powłoki na zdalnym serwerze, na którym skrypt jest lokalny.
Czynię to z niektóre aplikacje „Zdalne wykonanie” w moim środowisku testowym przy użyciu Python zamiast płaszcza:
ssh $userhost python < $pythonscriptfilename
.źródło
Odpowiednikiem SSH
sftp -b <filename> <hostname>
byłoby:ssh -o BatchMode=yes <hostname> sh -s < "<filename>"
źródło
Co powiesz na prostotę i uruchomienie pliku „wsadowego” na innym komputerze?
Plik wsadowy byłby normalnym skryptem powłoki, więc składnia jest dobrze znana.
źródło
man expect
? : \ale to nie jest idealny sposób.
źródło
expect
jest przeznaczony do interakcji z programami, które oczekują działania na terminalu. Nie ma to związku z problemem uruchamiania poleceń przez ssh.być może
źródło
Możesz użyć poleceń wymuszonych przez ssh.
Są one powiązane z określonym kluczem. Po przeprowadzeniu uwierzytelnienia za pomocą tego klucza to polecenie jest uruchamiane i połączenie zostaje zerwane. Zaletą tego podejścia jest zwiększone bezpieczeństwo, ponieważ w takim przypadku klucz nie może zostać użyty do uzyskania dostępu do powłoki logowania.
źródło
Inną opcją dla skryptu Arcege byłaby funkcja Bash:
Nie używam
-T
opcji ssh , ponieważ nie działa z nią we wszystkich przypadkach.Ten skrypt używa rozszerzenia parametrów w tablicy parametrów pozycyjnych
$@
:"${@:(-1)}"
rozwija się do ostatniego parametru (dosłownie od początku do końca)"${#@}"
rozwija się do liczby parametrów pozycyjnych"${@:1:${#@}-1}"
rozwija się do listy wszystkich parametrów od pierwszego do następnego do ostatniego (dosłownie liczba parametrów minus jeden).źródło