Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ssh越しにシンプルなコマンドを実行するだけならsudoもいける

ssh越しにシンプルなコマンドを実行するだけならsudoでもいけます。

実際のところ

よくあるのは、poweroffですね。

$ ssh -t robot@robot-desktop.local sudo shutdown -f
robot@robot-desktop.local's password: 
[sudo] password for robot: 
Shutdown scheduled for Wed 2019-08-21 00:58:12 JST, use 'shutdown -c' to cancel.
Connection to robot-desktop.local closed.

あらかじめローカルに置いておいたコマンドの実行もいける

$ ssh -t robot@robot-desktop.local sudo ./sudosample.sh
robot@robot-desktop.local's password: 
[sudo] password for robot: 
/home/robot
Connection to robot-desktop.local closed.

"-t"オプションでちゃんと端末を割り当てておく

"-t"オプション……つまり、仮想端末をちゃんと割り当てるオプションをつけとかないと

sudo: no tty present and no askpass program specified

とか言われて通りません。

-t
強制的に仮想端末を割り当てます。これはリモートマシン上で任意の画面ベースのプログラムを実行するとき(たとえば、メニューサービスを実装するときなど)に非常に便利です。複数の-t をつけると、たとえssh がローカル側での端末を持っていない場合でも強制的に仮想端末を割り当てます。

あんま頻繁にやると、詰まる

sshでリモートコマンドは便利ですが
性能の高くないボード(RasPiとか)で連発すると、詰まります。
ご利用はほどほどに。