linux脚本批量创建用户名和密码
当然 有些有风险的操作还是建议先 测试一下,再放进脚本 对自己有自信固然是好事 但不要盲目自信。先查询是否有这账号可以忽略该步。代码(部分):修改为创建用户全局替换而已: \ 转义的意思。也可以新建一个脚本,保留刚才查看的那个脚本。代码(部分):执行创建用户脚本expect 脚本名创建(修改)密码没密码的就是创建,有密码的就是修改。脚本中不能用普通方法 passwd 直接更改,需要用echo 的方
当然 有些有风险的操作还是建议先 测试一下,再放进脚本 对自己有自信固然是好事 但不要盲目自信。
可以忽略该步。
代码(部分):
cat /etc/passwd | grep jtcj
ssh 0.0.0.2 cat /etc/passwd|grep jtcj
ssh 0.0.0.3 cat /etc/passwd|grep jtcj
ssh 0.0.0.4 cat /etc/passwd|grep jtcj
ssh 0.0.0.5 cat /etc/passwd|grep jtcj
全局替换而已: \ 转义的意思。
也可以新建一个脚本,保留刚才查看的那个脚本。
全局替换:%s/cat \/etc\/passwd|grep jtcj/useradd jtcjxz/g
代码(部分):
cat /etc/passwd | grep jtcj
ssh 0.0.0…2 useradd jtcjxz
ssh 0.0.0.3 useradd jtcjxz
ssh 0.0.0.4 useradd jtcjxz
ssh 0.0.0.5 useradd jtcjxz

方法:expect 脚本名
没密码的就是创建,有密码的就是修改。
脚本中不能用普通方法 passwd 直接更改,需要用echo 的方法,命令格式: echo newpasswd | passwd --stdin useradd(如果提示 --stdin unkown option,用方法二)
全局替换,也可以保留上一个脚本!
方法一
很明显,我是方法一 不能用才有了方法二! 平常自己用方法一就好! 但如果不是有很多服务器,还是老老实实用 passwd 修改密码把 毕竟密码不可见 更安全,也或者,echo修改后 history –c 清除一下也可,但这清除的并非文件中,-c清除了文件中也可以找到,用批量改密码然后去删干净记录,也没必要这么折腾对吧,反正,知道echo 密码 可能容易被别人看到的风险就好。不过如果不是root密码 好像也没那么所谓对吧。
[root@controller01 ~]# echo Xz1@#Ty7 | passwd -–stdin jtxzcj
passwd: bad argument -–stdin: unknown option
提示我 --stdin 未知参数 ,what f!
见 方法二!!!
方法二
用chpasswd 修改,语法:echo user:newpasswd | chpasswd
亲测 可以!如果再不行,而且不想一台台passwd 修改,就得用 expect 脚本完成了,方式1和2都不行的或者想玩下实验的,可以见我博客中 expect命令详解来玩玩。
[root@controller01 ~]# echo jtcjxz:Xz1@#Ty7 |chpasswd
[root@controller01 ~]#
[root@controller01 ~]# su - jtcjxz
Last login: Mon Apr 6 08:36:57 CST 2020 from 10.237.99.83 on pts/0
[jtcjxz@controller01 ~]$ su - jtcjxz
Password:
Last login: Wed Apr 8 03:03:50 CST 2020 on pts/1
[jtcjxz@controller01 ~]$ logout
[jtcjxz@controller01 ~]$ logout
虽然本地实现可以,但当我ssh 修改其他服务器的时候,发现 不支持 gssapiauth…
这个是ssh版本问题吧 也或许是 开启了sapiauthentication 。
[root@controller01 ~]# ssh 0.0.0.2 echo jtcjxz:Xz1@#Ty7 |chpasswd
/etc/ssh/ssh_config line 57: Unsupported option “gssapiauthentication”
Authorized users only. All activity may be monitored and reported
解决方法就是
vi /etc/ssh/sshd_config
找到 下面两行并注释掉 ,然后重启ssh服务:systemctl restart sshd(7.0及以上版本)

但如果我要这样搞 我就得一台一台上去操作2次(注释和取消注释)。我疯了才会这样做吧! pass了方法二,于是就有了方法三!
对了,强行解释一波,常理下 该方法是可行的,看我测试机上:
[root@compute1 ~]# ssh 10.233.3.226 echo ccx:ccxplus | chpasswd
The authenticity of host ‘10.233.3.226 (10.233.3.226)’ can’t be established.
ECDSA key fingerprint is SHA256:DBump8wHadJ1tDhz2KUePkCN7xtZmmdkjQ6Ooi7j1j8.
ECDSA key fingerprint is MD5:5a:83:52:87:96:08:3a:34:06:38:eb:53:48:f7:58:ff.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘10.233.3.226’ (ECDSA) to the list of known hosts.
root@10.233.3.226’s password:
[root@compute1 ~]#
[root@compute1 ~]# ssh ccx@10.233.3.226
ccx@10.233.3.226’s password:
Last login: Tue Apr 7 19:05:37 2020
[ccx@compute1 ~]$ logout
Connection to 10.233.3.226 closed.
[root@compute1 ~]#

方式三
方式二中才说 我并不想用expect 来搞,本来不想麻烦的,但我不服输啊!
所以 真香警告! 搞嘛
注: 期间我 放了一些 理论上可行,但实际不行的实例。 请看到最后,不想了解过程的请直接跳到最后看可行方法。
说下先行条件:你的服务器上得有 expect 命令,没有的去装吧,不能yum的,一样,去我博客shell分类中找安装方法把,我现在有点烦躁 并不想去打开我的博客去复制链接放这。
怕服务器有啥不可抗拒因素误导我,所以我先用测试机做的实验!!!!
打开脚本,嘴角带着一丝邪笑,快速敲下最简单并且能达到我要求的命令:spwan ssh 10.233.3.226 echo ccx:ccx |chpasswd 当初研究这个没少被折磨,现在已经搞清楚运行模式,所以现在 熟练的让人心疼??
[root@control ~]$vi zh.sh
#spawn ssh 10.233.3.226 echo ccx:ccx | chpasswd
expect 执行脚本,没报错,完美!
然后登陆,密码错误?我输错了? 再来 错误? 老密码,登上了!! ???没生效??? 咦? 是不是不支持chpasswd
[root@control ~]$expect zh.sh
spawn ssh 10.233.3.226 echo ccx:ccx | chpasswd
[root@control ~]$
[root@control ~]$
[root@control ~]$ssh ccx@10.233.3.226
ccx@10.233.3.226’s password:
Permission denied, please try again.
ccx@10.233.3.226’s password:
Last failed login: Tue Apr 7 19:37:34 CST 2020 from controller on ssh:notty
There were 3 failed login attempts since the last successful login.
Last login: Tue Apr 7 19:35:10 2020 from controller
[ccx@compute1 ~]$ 登出
Connection to 10.233.3.226 closed.
既然怀疑是不支持 chpasswd 那就试–stdin吧。这时心里已经发憷了,不支持chpasswd? 没理由啊,而且要是不支持chpasswd ,只能用 --stdin, 服务器不支持–stding啊!!凉凉。
[root@control ~]$vi zh.sh
#spawn ssh 10.233.3.226 echo ccx:ccx | chpasswd
spawn ssh 10.233.3.226 echo ccx | passwd --stdin ccx
expect 执行脚本,没报错,完美!
然后登陆,密码错误?我输错了? 再来 错误? 老密码,登上了!! ???没生效??? 咦? 是不是不支持 --stdin ???
[root@control ~]$expect zh.sh
spawn ssh 10.233.3.226 echo ccx | passwd --stdin ccx
[root@control ~]$
[root@control ~]$
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。




既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
…(img-oLo9jDw8-1714298485832)]
[外链图片转存中…(img-pK7xWiyE-1714298485832)]
[外链图片转存中…(img-kgyrxsjk-1714298485833)]
[外链图片转存中…(img-zlEbAmln-1714298485833)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)