shell脚本自动输入密码(如何在Shell脚本输入密码)

:暂无数据 2026-09-24 20:50:02 :0

shell脚本自动输入密码(如何在Shell脚本输入密码)

“shell脚本自动输入密码”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看shell脚本自动输入密码(如何在Shell脚本输入密码)!

本文目录

如何在Shell脚本输入密码

这问题太广泛了。想到其中一种可能,下面答案来自

Linux命令大全 网站

终端输入密码时候,不让密码显示出来的例子。

方法1:

#!/bin/bash
read -p "输入密码:" -s pwdecho
echo password read, is "$pwd"

方法2:

#!/bin/bash
stty -echo
read -p "输入密码:" pwd
stty echo
echo
echo 输入完毕。

在Powershell脚本中安全的使用密码信息

在使用基于Powershell自动化的脚本中,大多数场景下需要未脚本传递凭据以供验证环节能够正常工作,很多管理员习惯于在他们的脚本中使用明文密码,但如果是测试脚本,倒是无关紧要,若是用于生产环境的脚本,这种行为不但很糟糕,还很可怕,不怀好意的同志们会很乐意并轻松的拿到它然后搞一些或轻或重的破坏。但是,如果正确使用powershell所提供的密码加密功能,能很轻松的解决这个问题。

PowerShell中,提供了两种生成凭据的方式分别是 Get-Credential 和 Read-Host
Get-Credential
Get-Credential 命令被用来创建PSCredential对象并且将之存储到变量中,并保证不在屏幕上显示如下

上面的命令将凭据信息保存到变量 $crd 中 ,这个变量可被很容易的用于访问需指定凭据的 Cmdlets
Read-Host
使用 Read-Host 同样可以起到保护明文密码显示的功能 如下, -AsSecureString 可以将明文密码存储成加密密码串对象,SecureString对象可被用于可接受该类型参数的命令,可以通过定义变量和管道输出将该对象传递给命令。

ConvertTo-SecureString
ConvertTo-SecureString 用于加密密码和其它字符串,它可以接受字符串然后输出为SecureString对象,SecureString对象可被用于可接受该类型参数的命令,可以通过定义变量和管道输出将该对象传递给命令。

语法如下:

当不适用参 -Key 或者 -SecureKey 时,PowerShell将会调用 Windows Data Protection API (DPAPI) 加密\解密字符串。但这将导致生成的 SecureString 对象在其它计算机上使用。
如下将把明文"Password"转化为 SecureString

这种方式虽然能够将明文字符转换为 SecureString 对象,但是却无法将其存储为一个文件以后用。必须把它转化为标准加密字符串才可以,要达到这个目的,要用到 ConvertFrom-SecureString 命令。
ConvertFrom-SecureString
使用 ConvertFrom-SecureString 命令可以将 SecureString 对象存储成为标准加密字符串,可以将 SecureString 对象或者命令产生的 SecureString 对象通过管道传给它来实现

语法:

上面的例子产生的 SecureString 对象可以用于此处转换成标准加密字符串

结合上面几个命令,我们可以有以下几种方法将 SecureString 转换成的标准加密字符串通过 Out-File 命令存储成txt文件

导出纯文本模式生成的 SecureString 对象

导出 Get-Credential 产生的 SecureString 对象

导出通过 Read-Host 产生的 SecureString 对象

将上述存储的标准加密字符串文件转换回 SecureString 并用来创建 PSCredential

上面提到,在使用 ConvertTo-SecureString 和 ConvertFrom-SecureString 加密凭据时,如不使用 -Key 或 -SecureKey ,则PowerShell会调用DPAPI进行加解密,因为无法再创建其之外的机器上使用,如下
同一台主机

不同主机上使用上面同一个txt文件

使用 Key 或者 SecureKey 实现跨机器使用加密文件
使用 -Key 参数创建保存标准加密字符串的文件,下面将会用到Windows Class “System.Security.Cryptography.RNGCryptoServiceProvider"来创建随机数据来填充作为 -Key 的参数值的数组

使用随机数据来创建AES key并导出为文件

创建 SecureString 对象

创建凭据

在另外的机器上

上面的内容已经完全可以帮助我们在powershell脚本中来加密密码了,如果有其它问题欢迎留言。

linux里的su命令需要输入密码,如何在shell脚本里实现自动输入su命令和密码

看过man su了,su并不带输入密码的参数,所以需要使用su命令切换用户的话,只能手动输入密码。

写一个shell脚本,要求输入用户名密码,用户名输错三次自动退出脚本,输对则输入密码,求大神帮忙

#/bin/bash
let i=0
let j=0
while true
do
read -p ’请输入用户名:’ name
rname=`cat /autorun/script/passwd.conf |grep ’\《’$name’\》’`
rname=${rname:=0}
if ;then
echo "输入的账号不存在!"
let i=i+1
if ;then
echo "账号已输入三次!"
break
fi
else
let i=0
while true
do
read -p ’请输入密码:’ pass
rpass=`cat /autorun/script/passwd.conf |grep ’\《’$name’\》’|awk ’{print $2}’`
if ;then
echo "登陆成功!"
let i=0
break
else
echo "密码输入错误"
let j=j+1
if ;then
echo "密码已输入三次!"
break
fi
fi
done
break
fi
done

利用shell脚本批量创建Samba账户,需要输入两次密码

是的,使用 pdbedit 命令批量创建 Samba 账户时,需要输入两次密码。这是因为在创建账户时需要设置账户的密码,并将密码存储在 Samba 数据库中。

如何在脚本里面自动输入密码

 shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。
  但是有时候我们可能会需要实现和交互程序如ftp,telnet服务器等进行交互的功能,这时候我们需要用到shell的自动交互功能.
  最简单的例子就是创建用户,我创建100个用户,初始密码为123,那么要是挨着passwd username ,交互性输入密码,那不得疯掉,但是脚本里应该怎么写呢?将密码123,输入到passwd命令?
  本文收集了较常用交互方法,并进行了比较和总结。
  自动交互方法一:利用命令的自带参数,将标准输入作为手动输入的内容
  自动交互最关键的就是交互信息的自动输入,首先联想到文件重定向,在shell编程中有这样一种用法(参考Linux与UNIX SHELL编程指南 chapt 5.7):"command 《《delimiter p="" 从标准输入中读入,直至遇到delimiter分界符。?
  重定向操作符command 《《delimiter是一种非常有用的命令,shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符, p="" shell就知道输入结束了。最常见的delimiter分界符是eof,当然完全可以自定为其他字符。
  对于需求1 要求的自动登陆ftp,并作系列操作,则可以用这种方法进行自动交互。代码如下:
  $ ftp -i -n 192.168.21.46 《
  user dbftp dbftp101
  ls
  EOF
  下面是得到的结果:
  Connected to 192.168.21.46.
  220 developerjail FTP server (Version 6.00LS) ready.
  331 Password required for dbftp.
  230 User dbftp logged in.
  Remote system type is UNIX.
  Using binary mode to transfer files.
  229 Entering Extended Passive Mode (|||54281|)
  150 Opening ASCII mode data connection for ’/bin/ls’.
  total 8847424
  -rw-r--r-- 1 dbftp www 9055318991 Aug 28 14:28 ewiz90.sql_2010-08-29
  226 Transfer complete.
  221 Goodbye.
  测试可以发现,如上代码使用帐号名dbftp,密码dbftp101成功登陆了ftp服务器,并进入目录,ls出当前目录的文件。
  注意事项:
  1 这里一定要加-i ,否则必定失败!!
  这里ftp用的-I 参数 结束了交互式输入,因此可以用文本的方式自动地输入用户密码以及操作方式
  如果不用-I 参数,那么必定要求你手动输入密码的!!那么就达不到自动登陆的要求了
  你可以man ftp找到这个参数
  -i 关闭多文件传送中的交互式提示。请参考 prompt、mget、mput 和 mdelete 子命令,以取得多文件传送中的提示的描述。
  -n 防止在起始连接中的自动登录。否则, ftp 命令会搜索 $HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。请参考 user 子命令。
  2 举一反三:只要是要求输入密码的命令,一般都带有一个参数,允许你从标准输入,输入用户密码,以及操作。
  其他常用的自动登陆命令的参数
  1) Passwd命令
  Linux下 Passwd有参数
  --stdin
  This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.
  所以linux下自动改变用户密码的办法就是
  Echo 密码 |passwd –stdin 用户名
  Freebsd没有以上参数 注意
  他的方法是echo passwd |pw mod user username -h 0
  2)smbpasswd
  -s
  This option causes smbpasswd to be silent (i.e. not issue prompts)
  and to read its old and new passwords from standard input, rather
  than from /dev/tty (like the passwd(1) program does). This option
  is to aid people writing scripts to drive smbpasswd
  3)sudo
  在shell脚本中需要用root用的来执行指令:
  sudo 自动输入密码
  echo "password" | sudo -S netstat -tlnp
  -S
  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
  3 标准输入还可以用以下两种写法:
  可以将下面的内容写入到一个文本
  然后ftp -I –n ip 《文本
  或者echo “..” |ftp –I –n ip
  都是可以的!
  因为他们都满足“有一个标准的输入”这个条件
  4 ssh的自动登陆没有这样的自动输入密码的参数
  一般都是使用公钥/私钥的方式自动登录
  这种文章满街都是,网上google一下ssh自动登陆就可以找到答案。
  或者用下面的办法。
  自动交互方法2:利用expect脚本自动登陆
  这个 expect基本属于一种编程了
  基本任何需要交互式登陆的场合,他都可以解决,是相当的牛逼。
  只要是第一种办法解决不了的,基本都可以用这种办法。

可不可以用脚本编一个自动输入账号密码的程序,比如上QQ,只要点一下程序就自动上了

on error resume next
dim path
set shell=CreateObject("WScript.shell")
path=shell.RegRead("HKLM\SOFTWARE\Tencent\PLATFORM_TYPE_LIST\1\TypePath")
if path="" then
path=shell.RegRead("HKCR\QQ\shell\open\command\")
path = Mid(path, 2, InStrRev(path, ".") + 2)
end if
set short=CreateObject("Scripting.filesystemObject")
set F=short.getfile(path)
Path=F.ShortPath
QQUin="QQ号"
QQPwdHash="密码"
Shell.run(Path & " /START QQUIN:" & QQUin & " PWDHASH:" & QQPwdHash & " /STAT:40")
其中的密码是你的密码用了BASE64+MD5转换的

shell脚本自动给用户配置密码

很高兴能回答你的问题,根据你的题意,给出如下回答:

配置单个用户的密码:

echo "PASSWORD_IN_PUT" | passwd --stdin USER

多个用户配置一个密码:

#!/bin/sh
FILE=/home/user.list    # 用户名保存文件
while read line
do
    echo "PASSWORD_IN_PUT" | passwd --stdin $line
done 《 $FILE

将如上内容保存到一个文件中,sh file 即可执行。

其中,FILE文件的格式为:

root
linux
test
ftp
# 等等,每个用户一行

多个用户配置多个密码:(必须有规律,没有规律无法用脚本自动执行)

#!/bin/sh
FILE=/home/user.lis
for item in `cat $FILE`
do
    case $item in
        root)
            # 用户为 root
            echo "PASSWORD_root" | passwd --stdin $item
            ;;
        linux)
            # 用户为 linux
            echo "PASSWORD_linux" | passwd --stdin $item
            ;;
        *)
            # 用户为其他
            echo "PASSWORD_other" | passwd --stdin $item
            ;;
    esac
done

以上两个循环中,for、while 都可以使用和互换,只是写法不同,列出两种,供你参考。

case 语句用于进行多分支判断,你可以在 *) 这个默认语句前面再加入其他判断,格式参照上例即可。

归根结底,自动配置密码的核心主要是你会不会 passwd 命令中的 --stdin 选项。

关于shell脚本自动输入密码,如何在Shell脚本输入密码的介绍到此结束,希望对大家有所帮助。

shell脚本自动输入密码(如何在Shell脚本输入密码)

本文编辑:admin

更多文章:


form表单制作(为什么制作的form表单会在网页显示中多出一行)

form表单制作(为什么制作的form表单会在网页显示中多出一行)

大家好,如果您还对form表单制作不太了解,没有关系,今天就由本站为大家分享form表单制作的知识,包括为什么制作的form表单会在网页显示中多出一行的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 09:10

teammate(teammate,company,partner)

teammate(teammate,company,partner)

各位老铁们,大家好,今天由我来为大家分享teammate,以及teammate,company,partner的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2026年10月11日 06:10

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)

其实javascript arraybuffer的问题并不复杂,但是又很多的朋友都不太了解javascript可以把base64编码转换成二进制代码吗求示例代码!,因此呢,今天小编就来为大家分享javascript arraybuffer的

2026年10月11日 04:00

text函数公式(excel中round和text函数的区别是什么)

text函数公式(excel中round和text函数的区别是什么)

“text函数公式”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看text函数公式(excel中round和text函数的区别是什么)!

2026年10月11日 03:50

pascal编程软件(介绍一下pascal语言!)

pascal编程软件(介绍一下pascal语言!)

大家好,如果您还对pascal编程软件不太了解,没有关系,今天就由本站为大家分享pascal编程软件的知识,包括介绍一下pascal语言!的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 02:40

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)

本篇文章给大家谈谈google chrome打不开,以及chrome浏览器打不开怎么回事 浏览器打不开的处理方法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2026年10月11日 02:00

websocket整合springboot(Springboot整合Websocket遇到的坑)

websocket整合springboot(Springboot整合Websocket遇到的坑)

大家好,websocket整合springboot相信很多的网友都不是很明白,包括Springboot整合Websocket遇到的坑也是一样,不过没有关系,接下来就来为大家分享关于websocket整合springboot和Springbo

2026年10月11日 01:40

小米官方首爆miui14(miui14耗电严重官方回应)

小米官方首爆miui14(miui14耗电严重官方回应)

各位老铁们好,相信很多人对小米官方首爆miui14都不是特别的了解,因此呢,今天就来为大家分享下关于小米官方首爆miui14以及miui14耗电严重官方回应的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 00:40

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 19:20

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

大家好,今天小编来为大家解答以下的问题,关于xor四位数怎么运算,单片机怎样用C语言实现4个数字间的异或这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 17:50

最近更新

thinkpade470c加内存条(thinkpad e470c内存条是什么牌子如果要添加4g内存什么牌子比较好)
2026-10-11 09:00:03 浏览:0
frontpage的主要功能(frontpage是什么)
2026-10-11 08:40:18 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表