从数据库创建用户给我随机的结果

时间:2017-03-13 13:37:12

标签: linux perl unix centos

我有这个脚本直到今天仍然有效。

我正在尝试自动创建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(不存在)

等等。这种随机行为以前没有发生过。我还停止了所有其他脚本,以确保没有干扰。它只发生在这里。由于结果的随机性,我无能为力。任何帮助将不胜感激。

编辑:重置脚本后再次运行。

1 个答案:

答案 0 :(得分:0)

重置服务器解决了这个问题,所以我认为这与Linux有关,而不是与代码有关。