手里有几台Linux服务器需要经常添加用户,每次都要登录到相应的机器上去添加,特别麻烦。于是想,可不可以在一台机器上写一个脚本来远程管理其它服务器呢?
目标首先瞄准了我熟悉的PHP-CLI,它有一个开发中的模块ssh2,可以完成相应的功能。这个不想说了,因为用了半天都不行,Bug还太多,建议大家如非必要还是不要用这个模块的好。
没了PHP,很迷茫,然后很幸运地发现了expect。expect是交互式shell编程的利器,可以根据返回值来确定下面发送什么命令,特别好用。我把自己编写的远程增加用户的shell跟大家分享下(需要机器装有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"
© 2009, kangzj. 版权所有.
十二月 21st, 2009 at 11:38
沙发
[回复]
kangzj 回复:
十二月 21st, 2009 at 13:18
@ShuaiGe.Me, 欢迎~~
[回复]
十二月 21st, 2009 at 11:45
板凳
[回复]
kangzj 回复:
十二月 21st, 2009 at 13:18
@houkai, 够简洁~Houkai,最近尽快啥呢?
[回复]
十二月 21st, 2009 at 13:02
为什么我又来晚了……
[回复]
kangzj 回复:
十二月 21st, 2009 at 13:18
@蓝冰, 呵呵,你那边我也基本没有抢到过沙发
[回复]
蓝冰 回复:
十二月 21st, 2009 at 13:20
@kangzj, 无所谓了,抢到喽就行,上午还来来着……
[回复]
十二月 21st, 2009 at 14:06
额。。看不懂。。。就不看了。。
[回复]
kangzj 回复:
十二月 21st, 2009 at 16:54
@fatkun, 来水下也是欢迎的啊,呵呵
[回复]
十二月 21st, 2009 at 14:25
有服务器的玩的都是高级的东东
[回复]
kangzj 回复:
十二月 21st, 2009 at 16:54
@zhukun, 没事瞎折腾
[回复]
十二月 21st, 2009 at 14:42
这个我不懂,哈哈
[回复]
kangzj 回复:
十二月 21st, 2009 at 16:55
@久酷, 就是添加用户而已
[回复]
十二月 21st, 2009 at 16:21
一点都看不懂。
[回复]
kangzj 回复:
十二月 21st, 2009 at 16:55
@Duia, 呵呵~
[回复]
十二月 21st, 2009 at 18:32
好东东
[回复]
kangzj 回复:
十二月 21st, 2009 at 19:16
@reus, 嗯,交互非常方便
[回复]
十二月 22nd, 2009 at 00:45
我也正在学习Linux,O(∩_∩)O哈哈~
[回复]
kangzj 回复:
十二月 22nd, 2009 at 15:42
@漠天, Linux非常爽,哈哈
[回复]
十二月 22nd, 2009 at 07:27
啊,看不懂,我来坐坐地板——太冷了
[回复]
kangzj 回复:
十二月 22nd, 2009 at 15:42
@zwwooooo, 呵呵~
[回复]
十二月 22nd, 2009 at 09:43
每个月总有那么几天…………要过来打酱油的。。。
[回复]
kangzj 回复:
十二月 22nd, 2009 at 15:43
@我买糕的。, 日用百货都有
[回复]
十二月 22nd, 2009 at 18:36
heloo my name is nilei
[回复]
kangzj 回复:
十二月 23rd, 2009 at 01:52
@nilei helo, 原来是。。。
[回复]
十二月 22nd, 2009 at 19:06
学习了。linux 不敢碰。
[回复]
kangzj 回复:
十二月 23rd, 2009 at 01:52
@精辟微博, 不敢碰怎么学习啊,呵呵
[回复]
十二月 23rd, 2009 at 10:56
嗯哼
[回复]
kangzj 回复:
十二月 23rd, 2009 at 16:12
@Showfom, 嗯哼个毛线~~吼吼
[回复]
十二月 23rd, 2009 at 10:58
linux我就玩过一次.还是上Q
[回复]
kangzj 回复:
十二月 23rd, 2009 at 16:12
@超人, 上Q?玩Linux?
[回复]
HzlzH 回复:
十二月 24th, 2009 at 15:44
@kangzj, 那个linux QQ太抵挡了。。。啥功能都米
[回复]
kangzj 回复:
十二月 24th, 2009 at 16:52
@HzlzH, 我反而感觉很简洁,很好用咧~
[回复]
HzlzH 回复:
十二月 25th, 2009 at 15:43
@kangzj, 这样的话,webQQ 是不错的选择,呵呵
PS:你的回复email 果然一如既往的在我的垃圾箱里
[回复]
kangzj 回复:
十二月 25th, 2009 at 16:56
@HzlzH, 你的邮箱比较凶猛。。。
[回复]
HzlzH 回复:
十二月 25th, 2009 at 21:56
@kangzj, 哪有啊,我一直用的Qmail你知道的,所以说phpmail就是没有smtp好,嘿嘿
[回复]
十二月 25th, 2009 at 10:45
不太懂这方面的东西呵呵,过来串门,并且圣诞快乐
[回复]
kangzj 回复:
十二月 26th, 2009 at 01:33
@Hobo, 圣诞快乐
[回复]
十二月 25th, 2009 at 16:59
圣诞快乐。。
[回复]
don 回复:
十二月 25th, 2009 at 21:56
@ShuaiGe.Me, 剩蛋快乐
[回复]
kangzj 回复:
十二月 26th, 2009 at 01:33
@don, 圣诞快乐
[回复]
kangzj 回复:
十二月 26th, 2009 at 01:34
@ShuaiGe.Me, 圣诞快乐
[回复]
十二月 25th, 2009 at 20:56
圣诞快乐
[回复]
houkai 回复:
十二月 25th, 2009 at 21:38
同上
[回复]
kangzj 回复:
十二月 26th, 2009 at 01:34
@houkai, 圣诞快乐
[回复]
kangzj 回复:
十二月 26th, 2009 at 01:34
@ngshaozhu, 圣诞快乐
[回复]
一月 2nd, 2010 at 15:12
这个交互式的就厉害了!
[回复]
kangzj 回复:
一月 2nd, 2010 at 23:58
@小桥流水人家, 呵呵,我也想做成交互的呢,不过时间不多,没功夫做呀~
[回复]
一月 9th, 2010 at 15:12
实用,收下了~
[回复]
kangzj 回复:
一月 9th, 2010 at 18:12
@pugwoo, 呵呵,挺有用的
[回复]