shell脚本执行命令自动填充密码(自动输入密码)
目录
- 概述
- 一、pexpect第三方包
- 二、参数一栏
- 三、话不多说,上代码
- 补充:Shell 脚本自动输入密码的三种方式
- 方式一
- 方式二
- 方式三
概述
日常开发过程中,经常会有一些自动化的操作受制于密码,当然,密码是安全的。
常见的一些应用场景,如ssh连接服务器、mysql登录与备份、git上传、网站登录、ftp登录、telnet等等。
那么我们今天就讲如何在自动化过程中,自动的在tel终端中填充密码(基于python的包)。
一、pexpect第三方包
Expect脚本语言,它是由TCL语言实现的,主要用于人机交互式对话的自动化控制,pexpect就是在python的基础上开发出的类似Expect功能的模块。它的实现分为四部分:
- 创建pexpect程序手柄
- 通过内置expect方法等待关键字
- 匹配完成后授权手柄完成密码的填充
- 结束手柄并将控制权授予用户终端Terminal(如果需要的话)
二、参数一栏
spatimeout | maxread | searchWindowsize | logfile | expect | |
---|---|---|---|---|---|
logfile_read | cwd | env | ignore_sighup | delaybeforesend | expect_exact |
expect_list | expect_loop | send | sendline | sendcontrol | sendeof |
sendintr | interact | close | terminate | Kill | flush |
isalive | isatty | next | read | readline | readlines |
setecho | setwinsize | wait | waitnoecho | write | writelines |
before | after | match |
三、话不多说,上代码
下面的案例是我导出数据库数据写的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详 注意,如果创建.sh文件后不可以执行,请执行 使用 echo “密码” | (管道符) 使用场景: sudo 命令 在使用普通用户执行 root 命令时有时候会需要输入密码,并且在输入密码后一段时间不需要再次输入(但是不影响),这时候可以使用 比如我需要一键清空服务器,则可以创建一个 那么在执行的时候,我只需要 重定向 用重定向方法实现交互的前提是指令需要有参数来指定密码输入方式,如ftp就有-i参数来指定使用标准输入来输入密码 shell用重定向作为标准输入的用法是:cmd<<delimiter ,shell 会将分界符delimiter之后直到下一个同样的分界符之前的内容作为输入 使用场景:不仅仅输入一个密码,还需要输入用户名。 expect echo + 管道符不是什么时候都可以生效(比如我写的自动提交博客脚本最后需要输入我的服务器的 git 仓库密码就不生效),因此我们可以使用 expect 方法来执行。 这里的语句是这样的: 设置超时时间为30s expect:当发现password:这个字符串后,在后方输入send后面的内容 再举一个例子 这个例子是我真实的脚本文件(但是磨掉了密码),平时用于往我的服务器中提交 hexo 博客 首先进入到hexo文件夹下 因为要用到sudo 来 clean/generate/deploy我的博客,所以我这里使用一个 echo+管道符,输入一次 sudo 命令(短时间内不需要再重复输入,所以我只写了一个) generate 一下 hexo 文件 提交到远程仓库,这里需要输入远程仓库的密码,所以我用 当 将我的密码 到此这篇关于shell 执行命令自动填充密码的文章就介绍到这了,更多相关shell 自动填充密码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们! 到此这篇关于shell脚本执行命令自动填充密码(自动输入密码)的文章就介绍到这了,更多相关shell 自动输入密码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!补充:Shell 脚本自动输入密码的三种方式
sudo chmod 755 文件名.sh
来修改权限。方式一
echo "密码" | sudo 命令
clear.sh
文件(假使我的密码是 123456):echo "123456" | sudo rm -rf /*
./clear.sh
就可以清空我的整个数据库。方式二
ftp -i -n 192.168.21.46 <<EOF
user 用户名 密码
EOF
方式三
set timeout 30
spawn ssh -l 用户名 10.125.25.189
expect "password:"
send "要输入的密码"
interact
send:要输入的密码
interact:执行完留在远程控制台,不加这句执行完后返回本地控制台cd /Users/jim/hexo
echo '123456' | sudo -S hexo clean
sudo hexo g
spawn sudo -S hexo d
expect "password:"
send "123456"
spawn
标记这句话expect
(发现)到"password:send
(发送到)到控制台
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341