sshでsudoを使ってtomcatをスタートする

  • centos 5系
$ ssh user@server sudo /usr/local/tomcat/bin/startup.sh
sudo: sorry, you must have a tty to run sudo

どうやらttyがないとエラーになるらしいので以下のオプションをつける

$ ssh -t user@server sudo /usr/local/tomcat/bin/startup.sh

このままだとスタートアップしてもsshでログアウトするとTOMCATも終了してしまう

$ ssh -t use@server sudo nohup /usr/local/tomcat/bin/startup.sh

nohupを使うことによりログアウト後もTOMCATが終了しない

ちなみに/etc/sudoersは

root	ALL=(ALL)	 ALL
user ALL=NOPASSWD: /usr/bin/nohup /usr/local/tomcat/bin/startup.sh

さらにパスワードを入れるのが面倒な場合は

  • remotestart.sh
#!/bin/sh
restart(){
expect << Eof
set timeout -1
spawn ssh -t user@host sudo nohup /usr/local/tomcat/bin/startup.sh
match_max 100000
expect -exact "user@host's password: "
send -- "password\r"
expect eof
Eof
}
restart

このシェルを実行