Shell 脚本自动输入密码的三种方式小结

 更新时间:2022年07月01日 11:16:49   作者:不食花生的猫  
本文主要介绍了Shell 脚本自动输入密码的三种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

注意,如果创建.sh文件后不可以执行,请执行sudo chmod 755 文件名.sh来修改权限。

方式一

使用 echo “密码” | (管道符)

使用场景: sudo 命令

在使用普通用户执行 root 命令时有时候会需要输入密码,并且在输入密码后一段时间不需要再次输入(但是不影响),这时候可以使用

echo "密码" | sudo 命令

比如我需要一键清空服务器,则可以创建一个clear.sh文件(假使我的密码是 123456):

echo "123456" | sudo rm -rf /*

那么在执行的时候,我只需要./clear.sh就可以清空我的整个数据库。

方式二

重定向

用重定向方法实现交互的前提是指令需要有参数来指定密码输入方式,如ftp就有-i参数来指定使用标准输入来输入密码

shell用重定向作为标准输入的用法是:cmd<<delimiter ,shell 会将分界符delimiter之后直到下一个同样的分界符之前的内容作为输入

使用场景:不仅仅输入一个密码,还需要输入用户名。

ftp -i -n 192.168.21.46 <<EOF
user 用户名 密码
EOF

方式三

expect

echo + 管道符不是什么时候都可以生效(比如我写的自动提交博客脚本最后需要输入我的服务器的 git 仓库密码就不生效),因此我们可以使用 expect 方法来执行。

set timeout 30
spawn ssh -l 用户名 10.125.25.189
expect "password:"
send "要输入的密码"    
interact

这里的语句是这样的:

  • 设置超时时间为30s
  • spawn 是 expect 的起始语句,可以理解为从此处开始
  • spawn 后面的语句是执行 ssh 连接
  • expect:当发现password:这个字符串后,在后方输入send后面的内容
  • send:要输入的密码
  • interact:执行完留在远程控制台,不加这句执行完后返回本地控制台

再举一个例子

这个例子是我真实的脚本文件(但是磨掉了密码),平时用于往我的服务器中提交 hexo 博客

cd /Users/jim/hexo
echo '123456' | sudo -S hexo clean 
sudo hexo g 
spawn sudo -S hexo d
expect "password:"
send "123456"

首先进入到hexo文件夹下

因为要用到sudo 来 clean/generate/deploy我的博客,所以我这里使用一个 echo+管道符,输入一次 sudo 命令(短时间内不需要再重复输入,所以我只写了一个)

generate 一下 hexo 文件

提交到远程仓库,这里需要输入远程仓库的密码,所以我用spawn标记这句话

当 expect(发现)到"password:"后执行send

将我的密码 send(发送到)到控制台

到此这篇关于Shell 脚本自动输入密码的三种方式小结的文章就介绍到这了,更多相关Shell 自动输入密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell中长命令的换行处理方法示例

    shell中长命令的换行处理方法示例

    这篇文章主要给大家介绍了关于shell中长命令的换行处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用shell具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • linux shell之控制台打印各种颜色字体和背景的实现方法

    linux shell之控制台打印各种颜色字体和背景的实现方法

    今天小编就为大家分享一篇关于linux shell之控制台打印各种颜色字体和背景的实现方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Linux系统links和elinks命令的基本使用教程

    Linux系统links和elinks命令的基本使用教程

    links和elinks都是Linux系统下的命令行浏览器,主要用于在终端中查看网页内容,这篇文章主要介绍了Linux系统之links和elinks命令的基本使用,需要的朋友可以参考下
    2023-09-09
  • shell脚本编程实现9*9乘法表

    shell脚本编程实现9*9乘法表

    这篇文章主要介绍了shell脚本编程实现9*9乘法表,本文直接给出实现代码,并同时总结了实现代码中的知识点,需要的朋友可以参考下
    2015-03-03
  • linux shell常用循环与判断语句(for,while,until,if)使用方法

    linux shell常用循环与判断语句(for,while,until,if)使用方法

    这篇文章主要介绍了linux shell循环,判断介绍,以及实例使用方法,需要的朋友可以参考下
    2019-04-04
  • linux下部署kodexplorer的方法

    linux下部署kodexplorer的方法

    下面小编就为大家带来一篇linux下部署kodexplorer的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Linux 中 RPM包 安装 查询 卸载命令小结及yum命令详解

    Linux 中 RPM包 安装 查询 卸载命令小结及yum命令详解

    RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证
    2015-11-11
  • shell脚本批量复制及执行命令的示例详解

    shell脚本批量复制及执行命令的示例详解

    这篇文章主要介绍了批量复制及执行命令shell脚本,本文通过列举几个示例给大家详细介绍,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 积累linux常用命令大全

    积累linux常用命令大全

    Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、驱动、键盘、鼠标,还是用户等都是文件,Linux命令是它正常运行的核心,这篇文章主要总结了linux常用命令,需要的朋友可以参考下
    2015-08-08
  • Shell正则表达式之grep、sed、awk实操笔记

    Shell正则表达式之grep、sed、awk实操笔记

    这篇文章主要介绍了Shell正则表达式之grep、sed、awk实操笔记,本文使用grep、sed、awk配合正则达到了一些需求和目的,需要的朋友可以参考下
    2014-09-09

最新评论