セキュリティ的にアウトだと思うんだけど…。

perl の system コマンド

cgi の中でコマンドを実行するのに、 1度目の post じゃエラーになって一度元のページに戻って、2度目の post は成功するとかなんか不安定な状態で悩むこと数時間…。

perldoc -f system

を見たら、

配列に入れなさいみたいな感じで書いてあったので。

@args = ("command", "arg1", "arg2");
system(@args) == 0
            or die "system @args failed: $?"


変更前→直書き

foreach ( @deluser ){
               system (/usr/bin/sudo /sbin/smbldap-userdel -r  $_) or die "User del err!! $? \n";
}


変更後→配列へ収納

foreach ( @deluser ){
               my @args = ("/usr/bin/sudo", "/sbin/smbldap-userdel", "-r", " $_", );
               system ( @args ) or die "User del err!! $? \n";
}


これでちゃんと動いた、たぶん記号とかが変な解釈をされてエラーになっていたんだと思う。


エイプリルフールネタじゃないですよ!つまりトリセツ読みなさいとゆうことでした。

今年のマストはエイプリルズ!!→Aprils Official Site

女子1人、男子2人とは思えないクオリティwww。もうどこからつっこ(rya


18:50 – 追記

あれ?そもそも書き方が違ったよ〜。カンマで区切るが正解か、理解した。

systemの使い方
system ‘/bin/echo’, ‘Hello world!’;

修正

system ("/usr/bin/sudo"," /sbin/smbldap-userdel","-r","$_") or die "User del err!! $? \n";

たぶんこれが正解。。