linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...
本文章总结了如何手动、自动修改本地用户密码及远程机器的用户密码。对做自动化测试提供了自动修改用户密码的原理及方法。
修改本地用户密码:
1、交互配置本地用户:
以root用户:
passwd
Changing password for user dewang.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
以非root用户修改自己的密码(注后面不能跟用户名,只有root用户才允许):
passwd
Changing password for user dewang.
Changing password for dewang
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
2、非交互配置本地用户:
echo | passwd --stdin
或
echo : | chpasswd
或
将:对先写到一文件passwd.tmp中,然后执行
chpasswd < passwd.tmp
3、自动脚本处理:
根据passwd命令修改用户密码,格式为:xxx.sh
#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}
if { $argc != 2 } {
puts "Usage: $argv0 "
exit 1
}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof
说明:如果要通过shell直接调用expect相关命令,则开头中必须是如下格式,然后后面即可按照expect、TCL格式书写了。
#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}
根据echo | passwd --stdin 及 echo : | chpasswd来修改用户密码:
#!/bin/sh
if [ $# -ne 2 ] ; then
echo "Usage: `basename $0` "
exit 1
fi
#echo "$2" | passwd --stdin "$1"
echo "$1:$2" | chpasswd
if [ $? -eq 0 ] ; then
echo "change password for $1 success"
else
echo "change password for $1 failed"
fi
修改远程主机上用户密码:
1、交互配置远程用户:
echo | ssh -l root passwd --stdin
如:
echo "newpass" | ssh -l root 10.11.103.151 passwd --stdin dewang
root@10.11.103.151's password:
Changing password for user dewang.
passwd: all authentication tokens updated successfully.
或
echo : | ssh -l root chpasswd 2>&1
或
将:对先写到一文件passwd.tmp中,然后执行
chpasswd < passwd.tmp [作者未测试]
或
ssh -l root
.... 交互输入root密码
然后执行以上的所有可用方式均可
2、非交互配置远程用户:
则需要用到expect来进行处理,通过ssh登录到远程机器,然后结合上述配置方式,以完成自动修改用户密码。
#!/usr/bin/expect
#@brief to change user password by ssh remote machine
proc usage {funcname} {
puts "Usage: "
puts " $funcname -user "
puts " $funcname -root "
}
# check param
if { $argc != 5 } {
usage $argv0
exit 1
}
# get param
set host [lindex $argv 0]
set username [lindex $argv 1]
set newpasswd [lindex $argv 2]
set loginname "root"
if { [string compare [lindex $argv 3] "-user"] == 0 } {
set loginname $username
}
set passwd [lindex $argv 4]
puts "$host $username $newpasswd $loginname $passwd"
spawn ssh -l $loginname $host
expect {
"*(yes/no)*" { send "yes\r"; set sshkey 1 }
"*assword:*" { send "$passwd\r"; set sshkey 0 }
if sshkey == 1 {
expect "*password:*"
send "$passwd\r"
}
}
expect "*#"
if { [string compare $loginname "root"] == 0 } {
#send "echo \"$username:$newpasswd\" | chpasswd\r"
send "echo \"$newpasswd\" | passwd --stdin \"$username\"\r"
} else {
send "passwd\r"
expect {
"*current*assword:" {send "$passwd\r"}
"passwd: Authentication token manipulation error" {exit}
}
expect "New*assword:"
send "$newpasswd\r"
expect "Retype*assword:"
send "$newpasswd\r"
}
expect "*#"
send "exit\r"
#interact 是否将交互权接过来,如果接过来,则用户这时可进行交互
linux下执行shell修改用户密码,[转] 关于linux下通过shell命令(自动)修改用户密码...相关推荐
- Win下执行Swing程序的BAT文件 和 Linux下执行Swing程序的SH文件
BAT文件: @echo off set CLASSPATH_BAK=%CLASSPATH% set classpath=%CLASSPATH%;.\lib\commons-codec-1.3.jar ...
- linux修改密码最短生存时间,Linux基础命令---修改用户密码
passwd 更改用户密码,超级用户可以修改所有用户密码,普通用户只能修改自己的密码.这个任务是通过调用LinuxPAM和LibuserAPI来完成的.本质上,它使用LinuxPAM将自己初始化为一个 ...
- linux添加用户命令_Linux useradd命令添加新用户图文详解
在Linux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下: [root@localhost ~]#useradd [选项] 用户名 该命令常用的选项及各自的含义,如表 1 所 ...
- android tmp目录权限不够,/tmp目录下执行脚本失败提示Permission denied
Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点. 问题现象 Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Per ...
- linux的用户及权限管理,Linux 用户及权限管理.doc
? ? ? ? ? ? ? ? Linux 用户及权限管理 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Linux 是一个多用户的操作系统,引入用户,可 ...
- linux文件权限754表示,Linux命令chmod修改文件权限 777和754方法
在linux操作系统下,使用shell命令来操作: 常用下面这条命令: chmod 777 文件或目录 示例:chmod 777 /etc/squid 运行命令后,squid文件夹(目录)的权限就 ...
- linux中国账号密码忘记,忘记Linux密码的解决办法
如果忘记了Linux密码,这时有两种情况,一种是用LILO管理器来启动的,另一种是不通过LILO启动的. 如果你的系统是通过LILO管理器来启动的,可在LILO启动提示符LILO boot:后输入Li ...
- Linux创建用户命令与删除用户命令
我们在Linux下创建用户主要有两种方式:adduser和useradd,它们的区别以及主要用法如下: adduser adduser的用法很简单,只需adduser+username即可,如下: s ...
- update mysql.user set password_使用update命令来修改Mysql的root密码
1, 使用update命令来修改Mysql的root密码 使用Mysql update命令既可以修改root的老密码,也可设置root的密码为空,如果使用update命令更改root的密码,需要使用M ...
- Linux 基金会执行董事 Jim Zemlin:全球 Linux 的发展和生态
北京时间 7 月 15 日,由中国开源软件推进联盟(COPU)主办,赛迪传媒.<软件和集成电路>杂志社联合承办,CSDN 独家直播的 2020 第十五届"开源中国开源世界&quo ...
最新文章
- 广搜--(搜索的第一道题)图像有用区域
- 微信小程序一定要用https的理由,小程序使用HTTPS链接分析
- python你是否也走进了这个误区了_Python是不是被严重高估了?
- HDU 4348 To the moon
- 5分钟k线数据 存储_短线高效炒股——60分钟K线买卖法,抓住买卖时机,看完受益匪浅!...
- 为什么突然变乱码_9102年了,还不知道Android为什么卡?
- Java Swing 如何关闭当前窗口?
- [译] 如何学习 CSS
- 北京ICP经营许可证备案申请流程 电信业务经营许可办理
- 不同版本的散点图矩阵
- 应用安全 - Web安全 - 逻辑漏洞整理
- IEnumerable,IQueryable之前世今生
- VIM 第五节:文件信息、跳转、定位括号和缩进 https://fishc.com.cn/thread-65856-1-1.html
- 有限元分析简介及伽辽金法
- Unity资源替换工具,旧模型替换新模型,替换GUID,替换meta文件,文件丢失等问题
- “未安装任何音频输出设备”解决办法
- 结构体所占字节数的计算
- Python攻城师的成长————css语法、伪元素选择器(部分)
- html锚点链接怎么互点,通过优化网页核心关键词快速提升排名
- java.applet.Applet类
热门文章
- android动画超出圆角,Android关于Glide的使用(高斯模糊、加载监听、圆角图片)
- vue移动端通过px动态计算图片宽高_vue图片宽高自适应_移动web图片高度自适应的解决方案...
- java定义说话方法_类定义的基本形式_Java语言程
- C++函数编译原理和成员函数的实现
- lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...
- java hashcode返回值_Java HashMap返回值未根据我对equals和hashcode的理解进行确认
- CRITIC法之matlab
- 云 文件 服务器 只存,云 文件 服务器只存
- python 生成字符串_Python字符串生成器,按照特定的顺序
- 在CSDN写文章头部生成标题目录