如何使用perl脚本创建向linux机器添加用户

时间:2013-04-28 11:40:33

标签: linux perl

我已经搜索了一些关于这个的暗示,但我很无能

我正在尝试使用perl将用户添加到linux机器 代码:

my $md5password = `openssl passwd -1 $password1`;
system("useradd -s /bin/bash -d /home/$username -p $md5password");

但结果是: sh: 2: -p: not found

当我通过终端执行此命令时没有问题... arrr! 任何人吗?

更新

10x到@BraveNewCurrency建议它的工作原理:)

代码:

if(($password1 eq $password2) && length($password1) > 0)
{
    $valid = 1;
    my $md5password = `openssl passwd -1 $password1`;
    chomp($md5password);
    system("useradd -s /bin/bash -d /home/$username -p \'$md5password\' $username");

稍后我会更多地考虑清理$username

我不能支持@BraveNewCurrency,因为我的代表不满15岁......如果你们中的一些人愿意支持他,我会很高兴的。

2 个答案:

答案 0 :(得分:1)

您应该检查shell元字符的用户名/密码,然后转义它们。 (否则这是一个等待发生的安全问题。)

您还应该查看Chef / Puppet / Salt / Ansible / ..等等,它们允许您在更高级别自动构建服务器。它们都是声明性的(并且是幂等的)所以不要担心icky细节。)

答案 1 :(得分:0)

据我所知,system命令使用参数列表,而不是字符串 你也应该明确指出你试图执行的命令的路径。

你试过了吗?

@args = (  
          '/usr/sbin/useradd', 
          '-s', '/bin/bash', 
          '-d', "/home/$username", 
          '-p', $md5password
         );
system(@args) == 0
    or die "Failed adding user: @args failed: $?"

正如其他人所说,你应该确保在创建用户之前清理$username,否则你可能会遇到大麻烦。