我有这个脚本直到今天仍然有效。
我正在尝试自动创建Linux用户。我是这样做的:
my $sql = 'SELECT id FROM users WHERE updated = 0';
my $sth = $dbh->prepare( $sql );
$sth->execute();
#
while ( my @row = $sth->fetchrow_array ) {
#print $row[0],"\n";
my @chars = ( '0' .. '9', 'A' .. 'F' );
my $len = 12;
my $hash;
while ( $len-- ) {
$hash .= $chars[ rand @chars ]
}
system( "/usr/sbin/useradd -g mygroup -d /home/newusers/$hash -s /sbin/nologin $hash" );
system( "echo $hash:$hash | /usr/sbin/chpasswd" );
my $sql_hash_update =
"UPDATE users SET hash = '"
. $hash
. "', updated = 1 WHERE id = '"
. $row[0]
. "'";
my $sth_hash_update = $dbh->prepare( $sql_hash_update );
$sth_hash_update->execute();
}
这一周完美无瑕。它在crontab中每分钟执行一次。
现在它只是覆盖目录并将所有者添加为某种随机数。
示例:
执行一次:
用户创建:AEB7F3BDED52(存在)
创建的文件夹:/ home / AEB7F3BDED52
文件夹的所有者:652350688667(实际上并不存在)
执行两次:
用户创建:AD1B583F6062(存在)
创建的文件夹:/ home / AD1B583F6062
文件夹的所有者:1013(不存在)
等等。这种随机行为以前没有发生过。我还停止了所有其他脚本,以确保没有干扰。它只发生在这里。由于结果的随机性,我无能为力。任何帮助将不胜感激。
编辑:重置脚本后再次运行。
答案 0 :(得分:0)
重置服务器解决了这个问题,所以我认为这与Linux有关,而不是与代码有关。