今私の環境では手元のPCとロボット に積んでいるRaspberry Piがあります。Raspberry Piは電源を繋げると勝手にONになります。しかしOFFにするときは
- sshでログイン
- パスワードを入力
- $ sudo shutdown now
- パスワードを入力
shutdownを行うROSnodeを書いて、ROSのリモートランチを使えば1行だけで記述をすることが出来ます。
しかしshutdownはsudo権限が必要なので単純に
system("sudo shutdown now");
とCで書いても実行されません。インタラクティブにパスワードを求められるのでコマンドでどうにかすることはできません。shutdownをユーザー権限でできるように権限の設定を変えても良いのですが、面倒な感じがします。実は"sudo -S"とやると標準入力からパスワードを入力できます。そこで以下のノードを作って、リモートから実行すると電源OFFが簡単にできます。
#include <stdlib.h>
int main(void)
{
system("echo 'raspberry' | sudo -S shutdown now");
return 0;
}