Możesz przekazać polecenie jako argument do SSH, aby po prostu uruchomić to polecenie na serwerze, a następnie wyjść:
ssh user@host "command to run"
Działa to również w przypadku listy wielu poleceń:
ssh user@host "command1; command2; command3"
Lub alternatywnie:
ssh user@host "
command1
command2
command3
"
Jak zauważyli wcześniej inni użytkownicy, uruchomienie suna serwerze uruchomi nową powłokę zamiast wykonywać kolejne polecenia w skrypcie jako root. Co trzeba zrobić, to użyć jednej sudolub su -ci alokacja siły TTY do SSH z -tprzełącznikiem (wymagany, jeśli trzeba wpisać hasło roota):
ssh -t user@host 'su - -c "command"'
ssh -t user@host 'sudo command'
Podsumowując, jednym ze sposobów osiągnięcia tego, co chcesz zrobić, byłoby:
#!/bin/bash
ssh -t user@172.1.1.101 "
sudo some_command
sudo service server_instance stop
sudo some_other_command
"
Ponieważ sudozazwyczaj zapamiętuje poziom autoryzacji przez kilka minut, zanim ponownie poprosisz o hasło roota, po prostu przygotowując się sudodo wszystkich poleceń, które musisz uruchomić jako root, jest to prawdopodobnie najłatwiejszy sposób uruchamiania poleceń jako root na serwerze. Dodanie NOPASSWDreguły dla użytkownika /etc/sudoerssprawi, że proces będzie jeszcze płynniejszy.
Mam nadzieję, że to pomoże :-)