有时需要为多台Linux服务器添加用户,以及管理其它信息,要是每次都一台一台的来搞,真是太麻烦了。 expect是交互式shell编程的利器,可以根据返回值来确定下面发送什么命令,特别好用。
以下脚本实现:远程增加linux用户的功能。需要机器装有expect。
代码如下:
复制代码代码示例:
#!/usr/bin/expect
#脚本第一个参数是远程服务器IP set IP [lindex $argv 0] #远程服务器用户名(通常用root) set USER [lindex $argv 1] #远程服务器用户名的密码 set PASSWD [lindex $argv 2] #添加的新用户 set Nuser [lindex $argv 3] #新用户的密码 set Npasswd [lindex $argv 4] #用spawn启动一个ssh客户端 spawn ssh -l $USER $IP #如果是第一次连接,要保存密钥再输入密码,如果不是第一次连接则输入密码 expect { "yes/no" { send "yes\r"; exp_continue } "password:" { send "$PASSWD\r" } } #如果不是root,要expect "$",下面不讲了,很简单 expect "*#" send "useradd -s /bin/sh -d /home/$Nuser $Nuser\r" expect "*#" send "passwd $Nuser\r" expect "*password:" send "$Npasswd\r" expect "*password:" send "$Npasswd\r" expect "*#" send "exit\r" |