首页 > 系统相关 >LINUX修改用户密码-交互式与非交互式

LINUX修改用户密码-交互式与非交互式

时间:2023-12-24 21:47:11浏览次数:45  
标签:交互式 passwd qa 密码 expect 与非 LINUX password

 

于 2016-06-27 19:24:16 发布 阅读量4.9k 收藏 4 点赞数 分类专栏: shell   shell专栏收录该内容 27 篇文章0 订阅 订阅专栏

最近管理的一批机器,有个需求是要统一修改一个帐号的用户名密码,比如将qa帐号的密码改为1234,后来还为了脚本化,很方便的执行,还使用了非交互式地修改用户的密码。简单记录一下吧。

  1. 交互式配置本地用户的密码:passwd 命令
[root@host_221-81 ~]# passwd qa
Changing password for user qa.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

 

  1. 非交互式修改本地用户的密码:chpasswd
# chpasswd命令使用起来很简洁
[root@host_221-81 ~]# echo "qa:1234" | chpasswd

# 使用passwd命令,也可以实现非交互式修改密码
[root@host_221-81 ~]# echo "1234" | passwd --stdin "qa"
Changing password for user qa.
passwd: all authentication tokens updated successfully.

 

  1. 使用expect来处理交互式输入,从而实现非交互式的密码修改。
#!/bin/sh
# \
exec expect -f "$0" "$@"
if { $argc != 2 } {
    puts "Usage: $argv0 <username> <passwd>"
    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
  • 注意:脚本的第二行,这种写法可能比较陌生,这是在TCL语言中的语法,The backslash is recognized as part of a comment to sh, but in Tcl the backslash

continues the comment into the next line which keeps the exec command from executing again.

该脚本的执行结果为:

[root@smilejay ~]# ./change-pwd-expect.sh qa 1234
spawn passwd qa
Changing password for user qa.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully

标签:交互式,passwd,qa,密码,expect,与非,LINUX,password
From: https://www.cnblogs.com/cheyunhua/p/17924906.html

相关文章

  • linux 命令之vi
    1开发者vi命令常见使用场景1.1linux环境下配置文件的修改2vi命令文件的打开和关闭2.1文件的打开*vi/project.log光标定位于首行首字母*vi+#/project.log:打开文件,并定位于第#行*vi+/project.log:打开文件,定位至最后一行*vi+/PATTERN/project.log:打......
  • Linux 启动MySQL 报错:Status:“Server shutdown complete“ Error:13(权限不够)
    Status:“Servershutdowncomplete”Error:13(权限不够)我在银河麒麟V10系统中安装启动MySQL出现的一个错误:“Servershutdowncomplete”Error:13(权限不够),我在其他系统中没有遇到到。问题背景在国产化系统银河麒麟V10上尝试启动MySQL服务器时,可能会收到如下错误信息:Status:"Ser......
  • Linux下,安装单机版Flink
    安装前准备jdk环境开始安装下载安装包地址1:https://archive.apache.org/dist/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz官方:https://dlcdn.apache.org/flink/flink-1.18.0/flink-1.18.0-bin-scala_2.12.tgz清华镜像:https://mirrors.tuna.tsinghua.edu.cn/apac......
  • Linux课程笔记
    Linux基础命令Linux的目录结构/,根目录是最顶级的目录了Linux只有一个顶级目录:/路径描述的层次关系同样适用/来表示/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txtls命令功能:列出文件夹信息语法:ls[-l-h-a][参数]参数:被查看的文件夹,不提......
  • Linux网络配置
    在虚拟机上添加第二张网卡。使用以下命令查看网卡:[root@localhost~]#iplink1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNmodeDEFAULTgroupdefaultqlen1000link/loopback00:00:00:00:00:00brd00:00:00:00:00:002:ens33:<BROADCAST......
  • Linux下PCI设备驱动开发详解(五)
    Linux下PCI设备驱动开发详解(五)本章及其以后的几章,我们将从用户态软件、内核态驱动、FPGA逻辑介绍一个通过PCIExpress总线实现CPU和FPGA数据通信的简单框架。这个框架就是开源界非常有名的RIFFA(reuseableintegrationframeworkforFPGAaccelerators),它是一个FPGA加速器的一种可......
  • Linux平台总线
    linuxdrv和dev都会注册进总线的链表,如果设备和驱动匹配,调用驱动程序的probe函数总线类型:bus_type代码分析:注册drv举例说明:分析注册一个平台drvdriver_register(&drv->driver) bus_add_driver(structdevice_driver*drv) klist_add_tail(&priv->knode_bus,&bu......
  • 将windows上socket的client程序修改到linux上运行
    将windows上客户端程序修改到linux上运行记录一下修改哪些地方编译命令文件夹的内容:包含了client.cppmySocket.cppmySocket.huntil.h链接在一起g++-cclient.cppmySocket.cppuntil.h-std=c++11-pthread使用g++编译器将client.cpp、mySocket.cpp和until.h......
  • linux中文件的特殊权限setgid-setuid-sbit
    1.SetUID一.SetUID的功能SetUID主要是给命令提供一个root权限,就是命令运行时拥有root用户权限,命令运行结束后root权限消失1.只有执行的二进制程序才能设定SUID权限2.命令执行者要对该程序有用x(执行)权限3.命令执行者在执行该程序时获得该程序文件属主(所有者)的身份(在执行程......
  • windows通过 桥接Usb 电缆连接linux 主机并通信的方法
    在Windows上通过USB转串口线连接Linux主机并进行通信,可以参考以下步骤:首先,插入USB转串口线到电脑的USB接口,此时系统会自动识别设备并安装驱动。检查设备管理器的端口(COM和LPT)中是否出现相应的串口信息。启动USB/IP项目以启用常见的开发人员USB场景,例如访问智能卡读取器等。确保你的......