Shell修改密码为原密码
密码到期后更改密码为原密码,服务器多时工作量巨大,编写脚本完成。
登陆后修改提示符为: doraemon# 方便expect匹配
修改LANG=C,提示为英文防止干扰:
#!/usr/bin/expect ###############################################################
# 连接远程主机
proc do_login {passwd} {
set timeout
set done
set timeout_case
set ps1 {PS1="doraemon#";export PS1}
while {$done<} {
expect {
*assword* {
send $passwd\r
incr done
}
\[$%>#] {
set done
send $ps1\r\r
break
}
timeout {
set done
switch -- $timeout_case {
{ send_user "try again ...\n" }
{ exit
expect eof
}
}
incr timeout_case
}
}
}
if {$done==} {
exit
expect eof
}
}
###############################################################
# 执行命令
proc exec_cmd {cmd} {
expect -re "doraemon#$"
send_user "\$cmd: $cmd\n"
send $cmd\r
}
###############################################################
# 退出
proc logout {} {
expect -re "doraemon#$"
send exit\r
expect eof
}
###############################################################
# 执行命令
proc change_pass {curr cmd} {
expect {
-re "current|existing|exist|old|Old"
{
send $curr\r
exp_continue
}
-re "New|new"
{
send $cmd\r
exp_continue
}
-re "successfully|uthentication|changed"
{
send \r
}
}
}
###############################################################
if {$argc < } {
send_user "Usage:$argv0 user pass ip newpass\n"
exit
}
set user [lindex $argv ]
set pass [lindex $argv ]
set ip [lindex $argv ]
set new [lindex $argv ]
set pass_1 {1pqz!PAZ}
set pass_2 {2wyx@WYX}
set pass_3 {3hwd#HWC}
set pass_4 {4zxv$ZXV}
set pass_5 {5nmb%NMB}
spawn ssh -o StrictHostKeyChecking=no -l $user $ip
do_login $pass
exec_cmd "LANG=C;export LANG" exec_cmd passwd
change_pass $pass $pass_1
exec_cmd passwd
change_pass $pass_1 $pass_2
exec_cmd passwd
change_pass $pass_2 $pass_3
exec_cmd passwd
change_pass $pass_3 $pass_4
exec_cmd passwd
change_pass $pass_4 $pass_5
exec_cmd passwd
change_pass $pass_5 $new logout
测试如下:
[root@centos1 shcript]# ./change_passwd.expect
Usage:./change_passwd.expect user pass ip newpass
[root@centos1 shcript]# ./change_passwd.expect root root123 127.0.0.1 root123
spawn ssh -o StrictHostKeyChecking=no -l root 127.0.0.1
root@127.0.0.1's password:
Last login: Fri Aug :: from 127.0.0.1
[root@centos1 ~]# PS1="doraemon#";export PS1
doraemon#
doraemon#$cmd: LANG=C;export LANG
LANG=C;export LANG
doraemon#$cmd: passwd
passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
doraemon#$cmd: passwd doraemon#passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
doraemon#$cmd: passwd
......
Shell修改密码为原密码的更多相关文章
- laravel hash密码生成和密码验证
在laravel中 登录表单中的密码是用hash来生成的. 在生成密码需要用到 laravel框架中的方法(都是laravel封装好了的) bcrypt($password)方法,直接将获取到的pas ...
- weblogic11g 修改密码和重置密码【原】
修改密码 知道密码的情况下,可参考该链接 http://www.cnblogs.com/may12138/p/6022946.html 或 http://www.cnblogs.com/lsdb/p/ ...
- ssm中通过ajax或jquer的validate验证原密码与修改密码的正确性
一.ajax 1. <script type="text/javascript"> //验证原密码1.ajax,正则 var ok1=false,ok2=false,o ...
- 1 npoi 网上 不用模板 设置密码 workbook.WriteProtectWorkbook("password", "admin"); 、、 2 locked.IsLocked = true; sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容 3 模板设置密码 确定原密码 设置新密码
1 workbook.WriteProtectWorkbook("password", "admin"); 还是可以进去 只读进去 可以编辑 编辑就另存为 ...
- win pe 修改xp系统开机密码方法
今天使用win pe 修改了xp系统的密码,有三种方法 一 . 最终找到了一个方法,这个方法只能改写密码,也就是说会留下痕迹,如下: 1.使用的工具:FbinstTool v1.50 FbinstT ...
- linux中如何用root去修改其他用户的密码
linux中如何用root去修改其他用户的密码 昨天linux实验课,我有很多自己想摸索的东西.今天周五,本是下午一二节是编译的实验,可强烈的欲望让我今早就来实验室了,摸索吧,碰到了这个问题.... ...
- 修改mysql root账号密码
一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...
- mysql 用户创建,修改和忘记root密码的操作
#创建用户CREATE USER 'zzq'@'localhost' IDENTIFIED by 'zzq';#flush privileges 命令本质上的作用是将当前user和privilige表 ...
- 安装xampp之后如何建立远程登录用户并修改登录方式和密码
其实xampp作为开发环是非常好用的,但是很少人将其用作生产环境,主要还是它的安全性较低,很多默认设置都存在安全漏洞,但是实际上使用xampp在Linux下面进行配置确实是很节省时间的一件事(如果你的 ...
随机推荐
- c#读写apk的 comment
写入: ZipFile zipFile = new ZipFile("C:\\Users\\Administrator\\Desktop\\2.apk"); zipFile.Beg ...
- 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景
最近Jerry写了一系列关于SAP云平台ABAP编程环境的技术文章,这些文章都是围绕着在云上的ABAP编程环境的具体知识点来分享,比如要完成一个具体的开发需求,所需要的编程步骤.这些文章陆续收到一些读 ...
- linux下安装dotnet core
windows下安装linux系统需要用到VMware 这个软件,可自行百度下载,然后安装centos7系统安装 centos下安装dotnetcore 在终端输入命令: sudo yum insta ...
- 【MySQL】SQL语句基础
一.操作数据库 1.1 创建数据库 1.2 查看数据库 1.3 修改数据库 1.4 删除数据库 1.5 选择数据库 二.操作表 2.1 创建表 2.2 查看表 2.3 修改表 2.4 删除表 三.操作 ...
- k8s pv无法删除问题
一般删除步骤为:先删pod再删pvc最后删pv 但是遇到pv始终处于“Terminating”状态,而且delete不掉.如下图: 解决方法: 直接删除k8s中的记录: kubectl patch p ...
- java容器tomat,jboss支持内部读取软链接
tomcat,jboss允许软链接 作用:当war包解压过后,需要将内部进行链接到外部的可移动存储上时,就需要使用此功能. tomcat默认是不开启tomcat链接的,需要手动添加配置项. 在tomc ...
- 2013.5.4 - KDD第十六天
昨天下午的时候中秋给我发短信"待会儿上课吧?上课讨论下?",然后我回复"嗯,好的."然后上课的时候中秋说那个方案也许不太好执行,因为他后来看数据了,数据库里面这种"可以从从协同作者进行判断"的例子并不 ...
- [PKUSC2018]主斗地
暴搜 非常暴力的搜索,以至于我都不相信我能过. 方法是:暴力枚举所有牌型,然后暴力判断是否可行. 暴力枚举部分: 非常暴力: void dfs(int x,int l){ if(l==0){ flag ...
- 01-学习vue前的准备工作(let和const)
es6语法:let和const es6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效 <!DOCYTPE html> <ht ...
- 2、Hadoop 2.X 概述及生态系统
Hadoop官网 http://hadoop.apache.org/ Hadoop来源 GFS -> HDFS MapReduce -> MapReduce BigTable -> ...