概述
日常开发过程中,经常会有一些自动化的操作受制于密码,当然,密码是安全的。
常见的一些应用场景,如ssh连接服务器、mysql登录与备份、git上传、网站登录、ftp登录、telnet等等。
那么我们今天就讲如何在自动化过程中,自动的在tel终端中填充密码(基于python的包)。
一、管道
跟重定向一样,指令同样要有参数来指定密码输入方式,如sudo的-S参数,passwd的-stdin参数
echo 'password'|sudo -S cp path.sh ../
echo 'password' | passwd -stdin username
二、pexpect第三方包
Expect脚本语言,它是由TCL语言实现的,主要用于人机交互式对话的自动化控制,pexpect就是在python的基础上开发出的类似Expect功能的模块。它的实现分为四部分:
- 创建pexpect程序手柄
- 通过内置expect方法等待关键字
- 匹配完成后授权手柄完成密码的填充
- 结束手柄并将控制权授予用户终端Terminal(如果需要的话)
三、参数一栏
spawn(交互程序开始后面跟命令或者指定程序) | timeout | maxread | searchwindowsize | logfile | expect(获取匹配信息匹配成功则只需except后面的程序动作) |
---|---|---|---|---|---|
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 |