Shell脚本中非交互式修改密码的两种方法

今天在写一个shell脚本的时候发现需要设置用户的密码,而设置密码是交互式的,这样在脚本中显然是不太好的,因此上网查找资料,发现了以下两种常见的非交互式设置密码的方式:

1:使用chpasswd

chpasswd其实是通过用户输入'用户名:密码'来更改一组用户的密码,还是一个可以批量修改密码的工具,具体的用法详见chpasswd用法,这里只做简单的介绍

格式:# echo 用户名:密码 | chpasswd

实例:

添加一个doiido的帐号,密码为123456

代码如下:

# echo doiido:123456 | chpasswd

2:使用passwd和--stdin组合

passwd默认是要用终端作为标准输入,而--stdin表示可以用任意文件做标准输入,这两个配合可以直接修改密码

格式:# echo '密码'| passwd --stdin 用户名

实例:

添加一个doiido的帐号,密码为123456

代码如下:

# echo '123456'| passwd --stdin doiido

这样就可以实现在非交互模式下修改密码,但是某些嵌入式linux这两种方式都不支持,则可以使用export来实现。

(0)

相关推荐

  • PowerShell批量修改AD用户密码属性的代码

    需求:非常普通的一个需求,就是给AD用户修改密码,但是问题是量太大了.所以写了个脚本 cls $pass = ConvertTo-SecureString -AsPlainText 12333333344.abc -Force Import-Csv -Path d:\pp.csv | foreach { Get-ADUser -Identity $_.name|Set-ADAccountPassword -Reset -NewPassword $pass Get-ADUser -Identity

  • Shell创建用户并生成随机密码脚本分享

    创建随机数的方法: 复制代码 代码如下: 1~~~~ /dev/urandom 在Linux中有一个设备/dev/urandom是用来产生随机数序列的.利用该设备我们可以根据在需要生成随机字符串. 比如我们要产生一个8位的字母和数字混合的随机密码,可以这样: 复制代码 代码如下: [linux@test /tmp]$ cat /dev/urandom | head -1 | md5sum | head -c 8 6baf9282 2~~~~ 其实,linux已经提供有个系统环境变量了. 复制代码

  • Shell脚本中实现把输入的密码转换为*(星号)的方法

    如果你需要写一段与用户交互,且需要输入一些敏感信息的(例如:用户密码.License等),那么直接用printf+read的方式,就会把用户输入的信息显示在屏幕了,这是不符合信息安全的,而且对客户体验来说也显得不够专业,所以就需要将用户输入的密码转换为*,样式如下: please input your passwd:1234 修改为: please input your passwd:**** 那么具体如何实现呢,请往下看-- #!/bin/sh getchar() { stty cbreak

  • shell脚本实现输入密码显示星号

    read -p "请输入使用者都名称:" USER echo -e "请输入使用者密码: \c" while : ;do char=` #这里是反引号,tab键上面那个 stty cbreak -echo dd if=/dev/tty bs=1 count=1 2>/dev/null stty -cbreak echo ` #这里是反引号,tab键上面那个 if [ "$char" = "" ];then echo #这

  • PowerShell中实现混淆密码示例

    适用于PowerShell 3.0或者更高版本, 尽管我们并不推荐将密码硬编码在脚本文件中,但是仍旧有一些场景非如此不可.与将密码以一种纯文本的方式硬编码相比,我们还可以稍微花点心思,把密码混淆一下.虽然混淆密码是一种非常低级的保护方式,但是对于不懂PowerShell的人来讲,还是比较神秘的. 接下来的脚本会向用户询问用户名和密码,然后删除通过混淆脚本进行处理,产生用户凭据对象. 当你运行了下面的脚本以后,用户凭据已经被保存在$cred.接下来你几乎可以在任何带有–Credential参数的命

  • shell脚本实现随机生成10个8位密码

    随机生成10个8位密码shell脚本 1.首位大写字母 2.中间六位大小写字母数字随机混合 3.第八位[0-9] #!/bin.bash for i in {1..10} do A=`head -c 500 /dev/urandom | tr -dc a-zA-Z | tr [a-z] [A-Z]|head -c 1` B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 6` C=`echo $RANDOM|cut -c 2` ech

  • Shell脚本实现自动输入密码登录服务器

    使用Linux的程序员对输入密码这个举动一定不陌生,在Linux下对用户有严格的权限限制,干很多事情越过了权限就得输入密码,比如使用超级用户执行命令,又比如ftp.ssh连接远程主机等等,如下图: 那么问题来了,在脚本自动化执行的时候需要输入密码怎么办?比如你的脚本里有一条scp语句,总不能在脚本执行到这一句时手动输入密码吧. 针对于ssh或scp命令,可能有人会回答是建立信任关系,关于建立ssh信任关系的方法请自行百度Google,只需要两行简单的命令即可搞定,但这并不是常规的解决方案,如果是

  • Shell脚本中非交互式修改密码的两种方法

    今天在写一个shell脚本的时候发现需要设置用户的密码,而设置密码是交互式的,这样在脚本中显然是不太好的,因此上网查找资料,发现了以下两种常见的非交互式设置密码的方式: 1:使用chpasswd chpasswd其实是通过用户输入'用户名:密码'来更改一组用户的密码,还是一个可以批量修改密码的工具,具体的用法详见chpasswd用法,这里只做简单的介绍 格式:# echo 用户名:密码 | chpasswd 实例: 添加一个doiido的帐号,密码为123456 复制代码 代码如下: # ech

  • Shell脚本批量添加扩展名的两种方法分享

    方法1: 复制代码 代码如下: for file in  `ls`; do mv $file $file.txt; done 方法2: 复制代码 代码如下: find . -type f |xargs -i mv {} {}.txt 还有一些试验不成功的,先记录在此. 1.用rename命令修改后缀名,这个是最简单最省事的办法 复制代码 代码如下: [root@demo test_rename]# ll 总计 20 -rw-r–r– 1 root root 0 09-27 00:57 renam

  • Linux通过Shell脚本命令修改密码的两种方式

    交互方式修改密码 1. ssh 远程到主机: 2. 切换到root账号: [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]: 3. passwd username 使用passwd username 修改 username 的密码: 使用该命令会有提示,即进入了交互界面,输入密码即可. 使用脚本修改密码 很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了. 此时可以使用如下两种方式修改密码: 方式1:

  • BAT脚本批量修改文件名的两种方法

    目录 一,先进入想要修改文件名的文件夹中,使用命令: 1.以示例文档为例进行说明 2.双击1.bat来生成yuan.xls文件,如下图: 二.直接通过BAT脚本实现 通过BAT脚本批量修改文件名的办法有两种: 一,先进入想要修改文件名的文件夹中,使用命令: dir /b "*.后缀名" > yuan.xls 从生成含有所需文件名的xls文件(即Excel文件),然后在xls文件中通过 CONCATENATE("ren ",A2," ",B2

  • lnmp重置mysql数据库root密码的两种方法

    第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本 一键脚本肯定是非常方便.具体执行以下命令: wget http://soft.vpser.net/lnmp/ext/reset_mysql_root_password.sh sh reset_mysql_root_password.sh 方便吧! 第二种方法:通过命令修改,具体如下: a.停止MySQL服务 执行:/etc/init.d/mysql stop b.跳过验证启动MySQL /usr/local/mysql/bin/

  • Shell脚本中计算字符串长度的5种方法

    有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下: 方法1: 使用wc -L命令 wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数. 复制代码 代码如下: echo "abc" |wc -L 方法2: expr length string 使用expr length可以获取string的长度 方法3: awk获取域的个

  • 易语言修改窗口标题的两种方法

    标题属性 操作系统支持:Windows 数据类型:文本型:本属性指定窗口的标题文本. 第一种方法修改标题默认,如图: 第二种方法在代码中修改,如例程: 说明 本属性用于获取和设置窗口标题栏中的标题. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • Shell脚本统计文件行数的8种方法

    获取单个文件行数 文件:test1.sh 行数:20 方法一 复制代码 代码如下: awk '{print NR}' test1.sh|tail -n1 如图所示: 方法二 复制代码 代码如下: awk 'END{print NR}' test1.sh 如图所示: 方法三 复制代码 代码如下: grep -n "" test1.sh|awk -F: '{print '}|tail -n1 如图所示: 方法四 复制代码 代码如下: sed -n '$=' test1.sh 如图所示: 方

  • Python更新数据库脚本两种方法及对比介绍

    最近项目的两次版本迭代中,根据业务需求的变化,需要对数据库进行更新,两次分别使用了不同的方式进行更新. 第一种:使用python的MySQLdb模块利用原生的sql语句进行更新 import MySQLdb #主机名 HOST = '127.0.0.1' #用户名 USER = "root" #密码 PASSWD = "123456" #数据库名 DB = "db_name" # 打开数据库连接 db=MySQLdb.connect(HOST,U

  • Shell脚本中多命令逻辑执行顺序的方法详解

    Linux中可以使用分号";".双and号"&&"和双竖线"||"来连接多个命令.单"&"符号也算命令连接符号,只不过它是将其前面的命令放入后台执行,所以可以变相地实现命令并行执行. 1.分号";" command1 ; command2 命令之间没有逻辑关系.分号连接的命令会按照顺序从前向后依次执行,但分号两端的命令之间没有任何逻辑关系,所有写出来的命令最终都会被执行,即使分号前面

随机推荐