利用Perl脚本自动添加CentOS 6系统用户和初始化VNC密码

在学校里面维护EDA软件的服务器,经常遇到的情况就是来了一批(不止一个)学生做项目,需要给他们添加服务器的账号和一个初始化的密码,所以写了一个简单的Perl脚本来做这个事情。脚本的内容其实是非常简单的,供大家参考,在这个基础上可以添加一些额外的功能,譬如直接自动根据/dev/random来产生密码,并且记录下来密码自动发给用户的E-Mail,因为我比较懒就没有搞这些功能……

#!/usr/bin/perl
use warnings;

$username = getpwuid( $< );
$file = "/home/ZZ/Desktop/Script/password.txt";

open($data, '<', $file) or die "Could not open file '$file' $!\n";

while (my $line = <$data>) {
  chomp $line;
  my @fields = split " " , $line;
  if (@fields) {

    my $username = $fields[0];
    my $password = $fields[1];
    @args = (  
          '/usr/sbin/useradd', 
          '-s', '/bin/bash', 
          '-d', "/home/$username", 
          '-g', "ISL",
          $username
         );

    system(@args) == 0 or die "Failed adding user: @args failed: $?";
    system("echo '$username:$password' | chpasswd");
    print "Import linux user $username successfully!\n"; 

    $vncPassword = `echo '$password' | vncpasswd -f`;
    mkdir "/home/$username/.vnc/";
    
    open(my $fh, '>', "/home/$username/.vnc/passwd") or die("error");
    print $fh $vncPassword;
    close $fh;
    print "Set VNC user $username password successfully!\n";
    
    system("chown -R $username /home/$username/.vnc");
    system("chmod 600 /home/$username/.vnc/passwd");
    system("chgrp -R ISL /home/$username/.vnc");
  }
}


上面的代码可以方便运维来批量添加用户,其中-g是用户对应的组,-s是对应的bash,-d是home文件夹,可以根据需要修改。其中password.txt的格式就是每行一个“用户名 密码”。一些额外的设置也可以参考脚本里面的方法,直接写入到用户的home文件夹下面。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注