shell脚本自动密码
1. 在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脚本中来加密密码了,如果有其它问题欢迎留言。
2. 安卓设备中在执行bat脚本时abd shell自动输入密码并执行命令怎么写
可以使用 echo 命令和管道符 | 将密码输入到 adb shell 的命令中。假设你的密码为 mypassword,需要执行的命令为 mycommand,那么弯弯亏可以这样写:
echo mypassword | adb shell mycomman
在上面的命令中,echo mypassword 将密码输出到标准输出流,然后通过管道符 | 将标准输出流连接到 adb shell mycommand 命令的标准输入流中,这样就实现了自动输入密码并执行命令埋神的效闹谈果。
3. shell脚本自动给用户配置密码
很高兴能回答你的问题,根据你的题意,给出如下回答:
配置单个用户的密码:
echo"PASSWORD_IN_PUT"|passwd--stdinUSER
多个用户配置一个密码:
#!/bin/sh
FILE=/home/user.list#用户名保存文件
whilereadline
do
echo"PASSWORD_IN_PUT"|passwd--stdin$line
done<$FILE
将如上内容保存到一个文件中,sh file 即可执行。
其中,FILE文件的格式为:
root
linux
test
ftp
#等等,每个用户一行
多个用户配置多个密码:(必须有规律,没有规律无法用脚本自动执行)
#!/bin/sh
FILE=/home/user.lis
foritemin`cat$FILE`
do
case$itemin
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 选项。
4. 想写一个shell脚本 要求可以自动输入密码
你可以这样试试:
function(){
echo $FORM_pw_|./ibe combine [email protected] key <<!
pw2
#这里面代表已经登录成功,可以直接输入命令。
exit #退出
!
echo
}
上面的是一个方法。如果不行,你可以使用expect工具。
5. shell脚本安装phpmyadmin自动输入用户密码
静默安装,可以使用下面的方案:
1、用debconf-show + 包名查出预配置项
root@compute204:/var/log/keystone# debconf-show slapd
* slapd/password1: (password omitted)
slapd/internal/adminpw: (password omitted)
slapd/internal/generated_adminpw: (password omitted)
* slapd/password2: (password omitted)
...
2、在脚本里,用debconf-set-selections设置然后安装,格式为 {包名} {配置项key} {配置项类型} {配置项value}
cat <<LDAP_PRESEED | debconf-set-selections
slapd slapd/password1 password ${LDAP_PASS}
slapd slapd/password2 password ${LDAP_PASS}
LDAP_PRESEED
3、安装
apt-get -y --force-yes install slapd
apt-get -y --force-yes install ldap-utils
6. linux里的su命令需要输入密码,如何在shell脚本里实现自动输入su命令和密码
看过man su了,su并不带输入密码的参数,所以需要使用su命令切换用户的话,只能手动输入密码。
7. shell脚本中如何实现scp自动输入密码
配置ssh认证销源就可以不输入密码了,可以使用这个链接的zcmd工具,亏岁态雀携https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/ztools
8. VBS怎么自动输入帐号,密码,并登录这个软件(客户端),
1)先用AppActivate 激活客户端为当前运行的应用
2)用wscript.shell对象的sendkeys()方法,模拟敲键盘的操作
.Sendkeys "{TAB}" :敲Tab键,将鼠标焦点定位到密码框
继续用.Sendkeys 敲密码
最后 .Sendkeys "~" 敲回车
9. 关于telnet自动登录shell脚本密码输入的问题
试试expect
spawn telnet $ip
expect “password:”
send “${password}\r”
interact