【Shell】Shell 脚本自动输入密码的三种方式_shell脚本自动输入密码_不食花生的猫的博客-程序员秘密

技术标签: Linux  shell  linux  服务器  

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

这里的语句是这样的:

  1. 设置超时时间为30s
    1. spawn 是 expect 的起始语句,可以理解为从此处开始
    2. spawn 后面的语句是执行 ssh 连接
  2. expect:当发现password:这个字符串后,在后方输入send后面的内容
  3. send:要输入的密码
  4. 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(发送到)到控制台

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Hsk_03/article/details/125496258

智能推荐

使用HttpClient4.5 post提交multipart/form-data数据实现多文件上传_大狐狸Nick万岁的博客-程序员秘密

使用HttpClient4.5 post提交multipart/form-data数据实现多文件上传场景:前端提交multipart/form-data数据,由api服务A将请求转发到api服务B。maven依赖&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;commons-httpclient&amp;lt;/groupId&amp;gt; &amp;lt;art...

python没用吗_现在还有没有人用python编程?_weixin_39575850的博客-程序员秘密

面对珍珠(Perl)夺目之光、灵蛇(Python)更具有上天入地之能。它可以在 MS-DOS,Amiga,BeOS, OS/2,VMS,QNX等多种OS上运行;比 Perl 和 VB更快更好,比 C 和 C++ 语言更具扩充性;不仅在“星球大战”、 “星球之旅(Star Trek)”等超级大片中当纲特技和动画制作,还闯入了美国航天航空局控制室。真相如何,请看报道。对 Perl (珍珠) 语言,互联...

java日志---最佳实践_杨光彩-sunny的博客-程序员秘密

目录一:日志的概念二:为什么需要日志?必要性,没有它,我们会怎样?意义,有了它,我们可以用来做什么?三:我们需要什么样的日志?何时记录?何处记录?日志的分类:级别、内容四、如何更好地利用这些日志?五、如何平衡日志记录和程序的性能?六、如何封装一个好用的日志组件/服务?参考实现一:日志的概念对程序操作的记录二:为什么需要日志?必要性,没有它,我们会怎样?1.无法准确定位问题2.无法快速解...

java matisse,安卓图片选择框架Matisse的使用_weixin_39629129的博客-程序员秘密

本文介绍图片选择框架Matisse的使用,实现图片的选择及使用相机进行拍摄,最后将选择或拍摄的照片显示在activity中。这里仅做使用介绍,不做深入研究。主要涉及处理安卓6.0权限的动态获取,这里使用rxpermissions本文目录1、github地址2、项目结构3、使用效果4、使用准备1)项目依赖2)AndroidManifest.xml文件3)filepaths.xml文件4)添加Glid...

Tensorflow 2.x源码详解之开宗明义:基本介绍和张量(万文多图)_tensorflow 2.x源码详解之第三章:导数_爱编程的喵喵的博客-程序员秘密

1. tf2简介2. 张量tensor(eager tensor)2.1 张量简介2.2 创建张量(tensor)2.2.1 tf.constant2.2.2 constant_initializer:指定shape和value的类2.2.3 tf.eye:单位矩阵或指定的1矩阵2.2.4 tf.fill:指定shape和value2.2.5 one_hot2.2.6 tf.ones:指定shape,value为12.2.7 ones_initializer....

云起实验室:通过workbench远程登录ECS,快速搭建Docker环境_云起实验室的博客-程序员秘密

本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。点击立即参与云产品场景体验https://developer.aliyun.com/adc/scenario/9fd79b8711984e309f20d82bc65a26fa?spm=a2c6h.13858375.0.0.54425b90rwAF3m建议体验时长:1小时云产品资源使用时长:1小时实验简介体验后您将收获到安装和使用Docker 使用

随便推点

java.io.FileNotFoundException: /opt/apache-tomcat-7.0.57/conf/server.xml (权限不够)_翱翔天地的博客-程序员秘密

1 错误描述[email protected]:~$ cd /opt/[email protected]:/opt/apache-tomcat-7.0.57$ bin/startup.shUsing CATALINA_BASE: /opt/apache-tomcat-7.0.57Using CATALINA_HOME: /o

网络安全之DDos攻击_puppycuty的博客-程序员秘密

一.DDoS 攻击究竟是什么?DDoS 攻击,全称是 Distributed Denial of Service,翻译成中文就是分布式拒绝服务。一般来说是指攻击者利用“肉鸡”对目标网站在较短的时间内发起大量请求,大规模消耗目标网站的主机资源,让它无法正常服务。在线游戏、互联网金融等领域是 DDoS 攻击的高发行业。例如:我开了一家有五十个座位的重庆火锅店,由于用料上等,童叟无欺。平时...

uniapp 小程序 h5登录、支付、分享、相关授权_uniapp h5和小程序 app登录_accumulate_的博客-程序员秘密

小程序登录&lt;button :loading="loading" class="delButtonStyle confirm" open-type="getUserInfo" @getuserinfo="getuserinfo" withCredentials="true" lang="zh_CN"&gt;微信登录&lt;/button&gt;// 小程序登录getuserinfo() { this.loading = true let that = this // 获取

mybatis insert 动态生成插入的列及插入的值_mybatis insert 动态列_杨航JAVA的博客-程序员秘密

代码如下 :1.mapper.xml 文件&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;&lt;mapper name...

Python轻松实现人脸识别_python 人脸识别工作原理图_平静愉悦的博客-程序员秘密

今天来分享一下关于Python图片膨胀和腐蚀、图片人脸识别以及动态人脸识别的代码~~~开心呢,本菜鸟当时可是沉浸在cv2库中久久不能自拔了好久的呢~~希望你也能享受Python带来的小惊喜哟。。0x 00 Python图片膨胀与腐蚀图像的膨胀和腐蚀主要是寻找图像中的极大和极小区域。代码中的结构元素是指:设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。详细的一些原理概念见文末链

HDU1871-1872-1873-结构体排序_话歪之地的博客-程序员秘密

这里介绍三个小题,主要都是结构体里面的排序。第一题:无题 HDU - 1871,链接https://vjudge.net/problem/HDU-1871构造房间结构体,按照价格排序。#include#includeusing namespace std;struct Room{ int id,cnt,price; bool operator < (con

推荐文章

热门文章

相关标签