LoginSignup
6

More than 5 years have passed since last update.

リモートシャットダウンするスクリプトを動作させるための設定

Posted at

概要

UPSからシャットダウンの通知を受けてから、
Ubuntuをシャットダウンさせるスクリプトを動作させるためにしたこと。
(Windows、CentOSはUPS付属のツールでシャットダウンできるため省略)

SSHの認証方法

Ubuntuにはすでにパスワードによる認証でSSH接続できるように設定済みであった。
プロンプトなしでSSH経由のアクセスが必要なために、公開鍵と秘密鍵を使用した認証に変更する。

公開鍵と秘密鍵の作成

プロンプトを表示させないためパスフレーズは入力せずに作成する。(SSHでリモートホストに接続する前にやっておくと便利なことは? ssh-keygenコマンド)

$ ssh-keygen -t rsa

~/.ssh/id-rsa.pubに公開鍵が作成される。

SSHサーバに公開鍵を登録

公開鍵をUbuntuにコピーする。

$ scp ~/.ssh/id-rsa.pub remoteuser@192.168.XXX.XXX:/home/.ssh/authorized_keys

注意:上記SSHサーバはauthorized_keysが存在しなかったため、公開鍵ファイルを直接、authorized_keysとしている。すでに存在している場合は、一旦別名で保存し、catコマンドなどで追加すること。

パスワード不要でシャットダウンできるように設定

プロンプトなしでSSH接続できるようになっても、shutdownコマンド実行時にroot権限が必要になるため、このままではプロンプトでパスワードを問われてしまう。

/etc/sudoers編集

shutdownコマンドのみパスワード不要で実行できるようにsudoersを編集する。
sudoersの編集にはvisudoコマンドを使用する。
(Ubuntu Forums Thread: Sending single command via SSH for shutdown)

$ ssh remoteuser@192.168.XXX.XXX #=> シャットダウン対象のUbuntuにログイン
$ sudo visudo

以下の行を追加

remoteuser ALL=NOPASSWD: /sbin/shutdown

$ exit #=> シャットダウン対象のUbuntuからログアウト

シャットダウンスクリプトの作成

#!/bin/bash
ssh remoteuser@192.168.XXX.XXX "sudo shutdown -P now"

上記ファイルに実行権限を設定する。

$ chmod 764 shutdown_script.sh

UPSの通知を受けて実行するスクリプトとして、上記ファイルを指定する。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6