Anda bisa meneruskan perintah sebagai argumen ke SSH untuk menjalankan perintah itu di server, dan kemudian keluar:
ssh user@host "command to run"
Ini juga berfungsi untuk daftar beberapa perintah:
ssh user@host "command1; command2; command3"
Atau sebagai alternatif:
ssh user@host "
command1
command2
command3
"
Seperti yang ditunjukkan oleh pengguna lain sebelum saya, menjalankan su
server akan meluncurkan shell baru alih-alih mengeksekusi perintah berikutnya dalam skrip sebagai root. Yang perlu Anda lakukan adalah menggunakan salah satu sudo
atau su -c
, dan memaksa alokasi TTY ke SSH dengan -t
saklar (diperlukan jika Anda perlu memasukkan kata sandi root):
ssh -t user@host 'su - -c "command"'
ssh -t user@host 'sudo command'
Singkatnya, satu cara untuk mencapai apa yang ingin Anda lakukan, adalah:
#!/bin/bash
ssh -t user@172.1.1.101 "
sudo some_command
sudo service server_instance stop
sudo some_other_command
"
Karena sudo
biasanya mengingat tingkat otorisasi Anda selama beberapa menit sebelum meminta kata sandi root lagi, hanya dengan menambahkan sudo
semua perintah yang perlu Anda jalankan sebagai root kemungkinan cara termudah untuk menjalankan perintah sebagai root di server. Menambahkan NOPASSWD
aturan untuk pengguna Anda /etc/sudoers
akan membuat proses lebih lancar.
Saya harap ini membantu :-)