我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell脚本执行命令自动填充密码(自动输入密码)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

shell脚本执行命令自动填充密码(自动输入密码)

目录
  • 概述
  • 一、pexpect第三方包
  • 二、参数一栏
  • 三、话不多说,上代码
  • 补充:Shell 脚本自动输入密码的三种方式
    • 方式一
    • 方式二
    • 方式三

概述

日常开发过程中,经常会有一些自动化的操作受制于密码,当然,密码是安全的。
常见的一些应用场景,如ssh连接服务器、mysql登录与备份、git上传、网站登录、ftp登录、telnet等等。
那么我们今天就讲如何在自动化过程中,自动的在tel终端中填充密码(基于python的包)。

一、pexpect第三方包

Expect脚本语言,它是由TCL语言实现的,主要用于人机交互式对话的自动化控制,pexpect就是在python的基础上开发出的类似Expect功能的模块。它的实现分为四部分:

  • 创建pexpect程序手柄
  • 通过内置expect方法等待关键字
  • 匹配完成后授权手柄完成密码的填充
  • 结束手柄并将控制权授予用户终端Terminal(如果需要的话)

二、参数一栏

spatimeoutmaxreadsearchWindowsizelogfileexpect
logfile_readcwdenvignore_sighupdelaybeforesendexpect_exact
expect_listexpect_loopsendsendlinesendcontrolsendeof
sendintrinteractcloseterminateKillflush
isaliveisattynextreadreadlinereadlines
setechosetwinsizewaitwaitnoechowritewritelines
beforeaftermatch

三、话不多说,上代码

下面的案例是我导出数据库数据写的demo,执行语法python backup.py >> backup.sql

import pexpect

# cmd = 'mysqldump -h 127.0.0.1 -uroot -P3306 -p123456 your-database'
cmd = 'mysqldump -h 127.0.0.1 -uroot -P3306 -p your-database'
proc = pexpect.spawn(cmd)
# 字串串匹配到返回值为0,列表匹配到返回列表中对应的下标
index = proc.expect('password:')
print(f'匹配到: {index} =>')
proc.sendline('123456')
proc.interact()

参考文章链接:

Pexpect 模块使用说明

Python模块Pexpect详

补充: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(发送到)到控制台

到此这篇关于shell 执行命令自动填充密码的文章就介绍到这了,更多相关shell 自动填充密码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

到此这篇关于shell脚本执行命令自动填充密码(自动输入密码)的文章就介绍到这了,更多相关shell 自动输入密码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

shell脚本执行命令自动填充密码(自动输入密码)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

shell脚本执行命令自动填充密码(自动输入密码)

目录概述一、pexpect第三方包二、参数一栏三、话不多说,上代码补充:Shell 脚本自动输入密码的三种方式方式一方式二方式三概述 日常开发过程中,经常会有一些自动化的操作受制于密码,当然,密码是安全的。常见的一些应用场景,如ssh连接服
2023-02-21

怎么使用shell脚本执行命令实现自动填充密码

这篇文章主要介绍“怎么使用shell脚本执行命令实现自动填充密码”,在日常操作中,相信很多人在怎么使用shell脚本执行命令实现自动填充密码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用shell脚本
2023-07-05

【Shell】Shell 脚本自动输入密码的三种方式

Shell 脚本自动输入密码的三种方式 注意,如果创建.sh文件后不可以执行,请执行sudo chmod 755 文件名.sh来修改权限。 方式一 使用 echo “密码” | (管道符) 使用场景: sudo 命令 在
2023-08-21

【linux】ssh 远程执行命令自动输入密码方式

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个
2023-08-18

shell脚本自动输入用户名和密码的实现

场景: shell脚本中,scp和ssh连接时,自动输入用户名和密码。 解决方案: 例: #SpVgyNAm!/bin/bash remoteIp=IP remoteUser=用户名 remotePw=密码function download
2023-02-20

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

使用Linux的程序员对输入密码这个举动一定不陌生,在Linux下对用户有严格的权限限制,干很多事情越过了权限就得输入密码,比如使用超级用户执行命令,又比如ftp、ssh连接远程主机等等,如下图:那么问题来了,在脚本自动化执行的时候需要输入
2022-06-04

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

目录方式一方式二方式三注意,如果创建.sh文件后不可以执行,请执行sudo chmod 755 文件名.sh来修改权限。 方式一 使用 echo “密码” | (管道符) 使用场景: sudo 命令 在使用普通用户执
2022-07-01

vue怎么自定义密码输入框解决浏览器自动填充密码问题

这篇文章主要讲解了“vue怎么自定义密码输入框解决浏览器自动填充密码问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么自定义密码输入框解决浏览器自动填充密码问题”吧!问题描述浏览器
2023-07-06

shell脚本自动输入用户名和密码如何实现

今天小编给大家分享一下shell脚本自动输入用户名和密码如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。场景:shel
2023-07-05

vue自定义密码输入框解决浏览器自动填充密码的问题(最新方法)

这篇文章主要介绍了vue自定义密码输入框解决浏览器自动填充密码的问题,通过将密码输入框的type设置为text,修改样式上的显示,来实现既可以让浏览器不自动填充密码,又可以隐藏密码的效果,需要的朋友可以参考下
2023-05-16

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

这篇文章主要介绍“如何用Shell脚本实现自动输入密码登录服务器”,在日常操作中,相信很多人在如何用Shell脚本实现自动输入密码登录服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Shell脚本实
2023-06-09

如何实现让DOS下输入命令时也可以象Linux一样用Tab键进行命令自动填充

本篇内容介绍了“如何实现让DOS下输入命令时也可以象Linux一样用Tab键进行命令自动填充”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方
2023-06-08

linux(ubuntu)用户连续N次输入错误密码进行登陆时自动锁定X分钟

1、编辑PAM的配置文件sudo vim /etc/pam.d/login在第二行添加auth required pam_tally2.so deny=3 unlock_time=5 even_deny_http://www.cppcns.
2022-06-04

编程热搜

目录