UNIXコマンドをPerl(CGI)で動かそうとする
外部からはSSHが通せないサーバーのスクリプトを動かしたいというのがテーマ。
crontabとかではなくて、任意のタイミングで。
まず、PerlでUNIXコマンドを動かすには方法がいくつかある。
- バッククォート(=backtrick) を使って動かす。
print `ls -al`;
出力はコマンドの実行結果。
- system()やexec()などの関数を使う
system "ls -al";
出力はコマンドの返値、正否。1とか0とか。詳しくは調べて。
別にどっちを使っても構わないと思う。
次に問題になるのはログインするユーザー。
- CGIによるアクセス => nobody
- 通常のSSHアクセス => rootとか登録されたユーザーとか
ファイルを触りたい場合、suするかsudoを使うしかない。
- suする場合
対話型のコマンドなのでパスワードが必要なユーザーには基本的にはsuできないが、expectを使えばいける。
詳しくは調べてー。インストール必要。 - sudoする場合
サーバー管理者に設定してもらう必要がある。
セキュリティーホールを広げるものなのでー、これは基本的に非推奨だよね。
どちらにせよ、こういうことをするのはセキュリティーを下げてリスクを上げるので良くなさそう。
できそうな感じにはなったけどね。
参考までに。
