0
我正在使用從數據庫添加用戶然後刪除數據庫的PERL腳本。當我執行它時,代碼工作正常。Cron沒有在PERL中執行我的系統()語句
use DBI;
use strict;
my $database = "database";
my $hostname = "123.4.56.78";
my $port = "3306";
my $user = "user";
my $password = "password";
my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
my $dbh = DBI->connect($dsn,$user,$password) or die "Can't connect to database: ", $DBI::errstr, "\n";
my $sql = 'SELECT * FROM somewhere';
my $sth = $dbh->prepare($sql);
$sth->execute();
while (my @row = $sth->fetchrow_array) {
system("useradd -g mygroup -d /home/somewhere/$row[0] -s /sbin/nologin $row[0]");
system("echo $row[0]:$row[1] | chpasswd");
}
my $sql_delete = 'TRUNCATE somewhere';
my $delete = $dbh->prepare($sql_delete);
$delete->execute();
但是,當我通過Crontab執行它時,系統()語句永遠不會執行,並且不會添加用戶。儘管它們從數據庫本身中刪除。
* * * * * perl /var/perl/myperl.pl
日誌說,每分鐘:
Jul 26 15:42:01 ex40 CROND[7028]: (root) CMD (perl /var/perl/myperl.pl)
任何想法?
嘗試添加'useradd'的完整路徑。 Crontab沒有獲得環境的副本。 – stevieb
'system'返回什麼錯誤? useradd發送給STDERR的輸出是什麼? – ikegami
加上第一行#!/ usr/bin/perl;在cron中更改爲* * * * */usr/bin/perl /var/perl/myperl.pl –