-
使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,...
2019-06-12 20:12:37有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互。 expect是一个自动交互功能的工具,可以满足代替我们实际工作中需要从终端手动...背景
有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互。
expect是一个自动交互功能的工具,可以满足代替我们实际工作中需要从终端手动输入某些内容来使得程序或命令继续运行的目的。如安装软件是时的一些提示,ssh远程主机执行命令时需要多次输入密码的情况。
安装expect
- 安装依赖:
yum install tcl -y
- 安装expect:Centos系统
yum install expect -y
或Ubuntu系统apt-get install expect -y
一些基本的expect命令
- spawn :启动新进程,用于执行shell命令;
- expect :从发起交互的命令的进程接受字符串,用于匹配我们预想的字符串;
- send :用于向发起交互的命令的进程发送字符串;
- interact:允许用户交互,即此命令后,交互将不会由expect进行,将交回给用户;
示例
#!/usr/bin/expect set timeout 30 set host "192.168.200.221" set username "root" set password "123456" spawn ssh $username@$host ls expect "password" {send "$password\r"} expect eof interact
#!/usr/bin/expect: 表示使用expect来解释该脚本。
set timeout 30: 表示设置超时时间,这里是表示超时时间为30秒,默认为10秒,用于执行shell命令的时间,如果执行的shell命令时间较长(如传输文件),则需要设置长一点。
set username “root” : 表示设置并定义了变量username,变量值为"root"。
spawn ssh $username@$host ls: 表示使用
spawn
来执行ssh $username@$host ls
命令,该命令只有在expect环境里才能执行,所以直接在命令行输入或没有安装expect则会报错,它的主要功能是给它后面的shell命令运行进程加了个壳,进行传递交互的内容,注意,如果用引号将变量引起,将可能导致错误extra characters after close-quote…,如果执行的命令需要用到引号,使用双引号,并使用\转义,但只适用于命令中只有一对引号的情况,如果出现多对引号,将会出现一些奇怪的错误,暂时不知道如何解决。如
ssh -l root 192.168.200.118 'mysql -uroot -p123456 -e "show datavases;"'
命令。只能先登录目标主机,再匹配root@ubuntu:~#,send发送命令。#!/usr/bin/expect -f set timeout -1 spawn ssh root@192.168.200.118 expect -re "password" { send "userpwd123\r" } expect -re ":~#" { send "mysql -uroot -p123456\r" } expect -re "mysql>" { send "show databases;\r" } expect -re "mysql>" { exit } expect eof
expect “password”: 表示从
spawn
执行的命令的进程里接受字符串,一般是弹出终端的交互行的标准输入提示信息,如需要你确定时的(yes/no?),需要你输入密码的(…password:)。这里因为ssh命令的交互内容是叫你输入密码,交互提示的内容有password,所以这里匹配password。需要注意的是,expect接受的是spawn执行的命令进程中可能出现的字符串,如果你的spawn执行的命令在执行完之后直接没有进程了,那expect也将不能匹配到任何的字符串,如spawn简单的执行ls等命令,这也说明expect多用于需要执行连接的场景。send “$password\r”: 表示当
expect
命令匹配成功,就把$password
发送给spawn
执行的命令的进程,完成交互,相当于手动输入$password
,这里的\r代表回车,也可以使用\n,记得加上\r或\n,否则脚本将可能会卡死。expect eof: 表示结束
expect
,读取到文件结束符 ,当spawn发送指令到终端执行时在返回时被expect捕捉时,在起始会有一个eof,就好比在shell中cat >>file <<EOF... EOF
一样,在结束时也要有eof;expect eof
有时间限制,即我们设置的超时时间,默认10秒,不过可能出现的问题是,如果是在传输一个大文件,可能在文件还没传输完成便断开了命令执行,此时需要设置超时时间长一点或set timeout -1
,或将expect eof
改成expect -timeout -1 eof
。interact: 执行完命令后,控制权交互控制台,此时再有交互,expect将不会进行交互,需要手动进行输入内容交互。如果没有这句,在需要交互的ssh命令执行完毕后将会退出远程,而不是继续保持在远程。
expect参数
$argc
:表示命令行参数个数[lindex $argv n]
:表示index为n的参数(index从0开始计算),index的区间为左闭右开,如[lindex $argv 0]
代表命令行输入的第一个参数,[lindex $argv 0 3]
代表命令行输入的第一到第三个参数 。
示例
#!/usr/bin/expect set host [lindex $argv 0] set username [lindex $argv 1] set num $argc if { num < 3 } { ... }
- 将第一个命令行参数赋值给变量host,将第二个命令行参数赋值给变量username,将总参数个数赋值给变量num。
expect流程控制
if语句:
if {条件1} { expect { "(yes/no)" { send "yes\r" expect "*assword:" {send "$password\r"} } "password" { send "$password\r" } } else { puts "Expect was timeout" send_user "Expect was timeout" }
expect {}: 多行期望,从上往下匹配,匹配成功里面的哪一条,将执行与之的
send
命令,注意,这里面的匹配字符串只会执行一个,即匹配到的那个,其余的将不会执行,如果想匹配这句命令执行成功后(如登录成功后等待输入的root@ubuntu:~#)的其他字符,需要另起一个expect命令,并保证不在expect{}里面。puts与send_user: 打印信息,类似echo
其他:
- 判断条件用{}包含
- 花括号与花括号,和括号与控制语句之间需要有空格,否则会报错expect:extra characters after close-brace
- if右边要有左花括号,else左边要有右花括号,不能单独一行
for语句:
for {set i 0} {$i < 10} {incr i} { puts "I inside first loop: $i" }
while语句:
set i 0 while {$i < 10} { puts "I inside third loop: $i" incr i puts "I after incr: $i" }
incr: 递增运算符 incr i ,类似++
switch语句:
switch--$var { 0 { 语句块 } 1 { 语句块 } ... }
函数定义和调用:
使用proc定义函数,使用时输入函数名和参数调用
proc test_exp {argv1 argv2} { puts "hello:$argv1" } test_exp 参数1 参数2
expect数组:
set arr(n) "hello" # 赋值,arr为数组名 set arr(1) "first" $arr(1) # 引用 array size arr # 查看数组大小 注意:如果是shell中插入的一段expect中想使用数组,需要转义\$,或<<\EOF...EOF
其他的一些内容
-
使用正则匹配:使用
-re
选项,expect -re “\\\[(.*)]” 其中[在expect shell 正则中都有特殊意义,因此要\三次 ,如果spawn执行的命令不能匹配通配符*,需要在spawn 后加 bash -c。 -
expect -i选项:已交互的方式运行expect。
-
expect -D选项:交互式的调试器,类似gdb。
-
expect -c选项:可执行命令的前置符,expect命令可在命令行执行,该选项-c后的命令需要引号引起来,引号内多个命令分号隔开,可使用多次-c选项,空格隔开。
-
expect -f选项:常见于文件第一行,即
#!/usr/bin/expect -f
,指定expect读取的expect命令文件,可选项,该选项会将文件一次性全部读取入内存,加上-f选项可以为执行expect提供更多参数。 -
expect -b选项:类似-f选项,只是每次只读取一行,即可以逐行的执行expect。
-
拼接字符串:使用append命令
append "hello"$user",welcome!"
-
sleep:脚本进入睡眠,使用和其他语言一样,直接跟数字即可,单位为秒。
-
exit:退出
-
foreach:对指定集合的每一个元素,依次赋值给变量。
foreach [变量] {集合} {语句;} foreach i {1 2 3} { puts $i } 输出:1 2 3
-
exp_continue
: 循环匹配,通常匹配之后会退出语句,但使用exp_continue
则可以不断循环执行某段语句。expect { "password" { send "$password\r" exp_continue # 不断匹配字符串"password",只要匹配成功就send } } expect eof
-
shell 嵌套使用expect,使用重定向,需要注意EOF之间的互相对应,并且变量需要在shell中定义,否者将会找不到变量,expect引用变量部分将是空内容,如同变量消失。如果想使在expect里定义的变量生效,使用<<\EOF…EOF,或用引号将第一个EOF引起来,即<<“EOF”…EOF,这样expect中set定义的变量,遍历时赋值的变量以及expect数组就都能使用了,但是相对的,shell里定义的变量也就不能使用了。
#!/bin/bash hostname=$1 #接收第一个参数 password=$2 /usr/bin/expect <<-EOF # 重定向到expect,想使用expect中set定义的变量,需要转义\$ spawn ssh root@${hostname} # 或使用\EOF,但如果是\EOF,将不能使用Shell的变量 expect { "(yes/no)" { send "yes\r" expect "*assword:" {send "$password\r"} } "password" { send "$password\r" } } expect eof EOF # 由于用的-EOF,这里的EOF可以有空格,tab键 /usr/bin/expect <<EOF set m_pm(1) "hello" set m_pm(2) "world" puts "\$m_pm(2)" foreach i {1 2 3} { puts \$i } expect eof EOF
-
excpet中执行shell语句,
exec sh -c {shell语句}
,多用于赋值变量,需要注意的是,expect里使用exec执行的shell语句,即使有打印和交互内容(echo,read命令)也不会输出到终端,即执行了命令,你并不知道是否出错,也不知道执行结果,如果需要将shell中echo命令打印的内容输出到终端,只能将执行结果赋值给expect变量,再使用puts命令打印出来,但即使这样,也会出现一些莫名头疼的问题,所以尽量不要在expect中调用复杂的shell语句。你也可以使用匹配字符,send “命令\r” 的方式执行shell命令,相当于交互互动,如expect ":~#" { send "ls\r" }
匹配到root登录后的终端待输出状态,send发送ls命令并回车。exec sh -c {shell 命令} # 执行的shell命令即使有打印和需要交互的内容也不会出现在终端 set test_echo [exec sh -c {echo "test"}] puts "$test_echo"
-
expect/shell互相使用彼此变量
-
如果两者在同一文件中,两者只是作为一段语句存在,使用
#!/bin/bash
解释的shell文件,expect调用shell变量直接$变量
,和shell脚本调用变量方式并无异同,使用#!/usr/bin/expect
解释的expect脚本文件,shell作为expect文件的语句,如set a [exec sh -c {echo \$LAB}]
调用expect变量,需要在expect里面设置环境变量。如:
set ::env(LAB) my_lab
-
如果两者是分别为不同文件,expect作为脚本在shell脚本文件中被调用,如
./test.excp
,首先需要在shell中进行变量export, 例如export a="test"
, 然后在expect脚本文件中通过 $::env(a) 引用shell脚本文件的变量,例如set a_exp \$::env(a)
,同时也可以通过执行子shell调用,例如:set a [exec sh -c {echo $a}]
-
-
向进程发送
Ctcl + c
,如果想向远端发送Ctrl-C结束远端进程,可以通过send “\003” 实现。
参考博客:
- 安装依赖:
-
Linux的grep和find命令
2011-12-08 20:48:09grep命令 grep:在文件正文中查找指定的字符串 语法:grep[参数] 查找模式 文件名[文件名] ...在搜索的文件中允许使用通配符 参数: -c:只显示匹配行的行数 -i:匹配时不区分大小写,默认情况下匹配时区分大grep命令
grep:在文件正文中查找指定的字符串
语法:grep[参数] 查找模式 文件名[文件名]
grep命令用于在指定文件中查找与模式匹配的行,并将匹配的行显示在标准输出上。如果没有指定文件,则从标准输出中读取。当在多个文件中进行查找时,将在每行输出之前加上文件名。在搜索的文件中允许使用通配符
参数:
-c:只显示匹配行的行数
-i:匹配时不区分大小写,默认情况下匹配时区分大小写
-h:在多个文件中查找时,输出行前不显示文件名
-n:在输出前加上匹配串所在行的行号(文件首行行号为1)
-v:只显示不包含匹配串的行
-f filename:从指定文件中获取搜索模式,每行一个搜索模式项
例如:
在当前目录下的所有C文件中查找printf字符串
[root@localhost user1]#grep printf.c
将系统帐号文件中包含user1的行显示出来
[root@localhost user1]#grep /etc/passwd
当搜索模式中包含空格时,要把搜索模式用单引号括起来
例如:[root@localhost user]#cat>dialog
Your name is:
Linux
<ctrl+d>
[root@localhost user1]#grep ‘your name’dialog
Your name is:
在有多个搜索模式时,可以将这些搜索模式写入文件中,利
用-f参数从文件中读取搜索模式项。例如:
[root@localhost user1]#cat>mode.txt
name
lin*
<ctrl+d>
[root@localhost user1]#grep –f mode.txt dialog
Your name is:
Linux
find命令
find:查找文件
语法:find 搜索路径 匹配表达式
该命令用于在指定路径中查找符合条件的文件,搜索路径可
以是多个目录,不同目录之间用空格分割
(1)匹配表达式1
-name filename:要查找的文件名。可以使用通配符
“*”、“?”,但要用双引号将文件名引起来。
-user username:查找属于username用户的文件
-group groupname:查找属于groupname组的文件
-print:显示找到的文件路径名。
例如:
在当前目录下查找以h开头的文件
[root@localhost tmp]#find .-name “h*” –print
在整个文件系统中查找名为hosts的文件。
[root@localhost tmp]#find /-name hosts –print
(2)匹配表达式2
-exec 命令{}:对找到的匹配文件,执行所列出的命
令,而不询问用户是否执行这些命令,参数{}由find
到当前的文件路径名取代,命令行末尾必须有“\;”。
-ok 命令{}:与-exec的用法相同,在执行命令前询问
用户是否要执行命令。
例如:找出/home下属与用户user1的所有文件并显示其内
容。
[root@localhost tmp]#find /home –user1 –execcat{}\;|more
(3)匹配表达式3
-atime n:查找前n天访问过的文件(仅n天这一天)。
-atime +n:查找n天之前访问过的文件;-n则表示前
n天之后。
例如:
找出用户一年前访问过的文件
[root@localhost tmp]#find /home –atime +365 –print
找出用户user1主目录下属于自己的前3天以后访问过
(3天以来没有用过)的文件并删除
[root@localhost tmp]#find $HOME –user user1 –atime
+3 –exec rm –r {};\
(4)匹配表达式4
-type filetype:指定查找的文件类型
Fletype可以是:b块文件;c字符设备文件;d目录
文件;f一般文件;l符号连接文件。
例如:
在当前目录下查找所有子目录
[root@localhost tmp]#find .-type d –print
在当前目录下查找所有普通文件
[root@localhost tmp]#find .-type f –print
(5)匹配表达式5
-size Number和Numberc:按照文件大小进行查找。
Number表示以字节为单位,否则以块(一般是512字节)
为单位。-Number(或—Numberc)表式查找比该值小的文
件,+Number(或+Numberc)表示查找该值大的文件。
例如:
在当前目录下查找所有长度小于10块的文件
[root@localhost tmp]#find .size -10 –print
在当前目录下查找所有长度小于10字节的文件并以长格式
显示文件信息。
[root@localhost tmp]#find .-size -10c –print|ls –l
在当前目录下查找100~200块长的文件并显示文件的实际
块数。
-
linux|批量创建文件、文件夹或删除——通配符
2018-07-23 10:24:16前言: 在关于文件操作的部分,我们之前学到的一些有趣的命令。它有一个问题就是一次只能在一个文件上运行,效率不高。...每当我们引用路径时,我们也可以在该路径中使用通配符将其转换为一组文件或目录。 注...前言:
在关于文件操作的部分,我们之前学到的一些有趣的命令。它有一个问题就是一次只能在一个文件上运行,效率不高。那么通配符就派上用场了!!!
通配符是什么:
通配符是一组构建块,允许您创建定义一组文件或目录的模式。您可能还记得,每当我们在命令行上引用文件或目录时,我们实际上都指的是路径。每当我们引用路径时,我们也可以在该路径中使用通配符将其转换为一组文件或目录。注意:下面示例中{}中,要写..,而不是…。
一、 批量创建文件
touch file
:平时我们都是这样创建一个文件。
如果我们想创建的文件,它的名字都类似:file0.txt,file1.txt … … file9.txt,那我们可不可以用一个命令直接快速创建多个文件?
touch file{0..9}.txt
:这条命令便可以实现上面的要求。二、 批量删除文件
rm -rf file
:删除一个文件。
如果我们想把上面批量创建的那些文件全部删除 该如何做呢?
rm -rf file{0..9}
三、 批量创建文件夹
mkdir dir
:创建一个文件夹。
如果我们想快速创建名字类似的文件夹该如何做呢? 同理,
mkdir dir{0..9}
:这条命令便可以实现上面的要求。四、 批量删除文件夹
rmdir dir
: 只可以删除一个空文件夹。
rm -rf dir
:可以删除一个空、非空文件夹。
如果批量删除上面的生成的文件夹。同理,
rmdir dir{0..9}
或者rm -rf dir{0..9}
。重要概念
任何路径的任何地方:通配符可以用于路径的任何部分。
无论何处使用路径:由于通配符替换是由系统完成的,而不是命令。因此可以在使用路径的任何地方使用它们。后记:
在文件操作中,除了掌握必要的命令,来提高效率以外,通配符也是一个必备技巧。
作者:瑾兰
链接:https://www.jianshu.com/p/1a357fc76bbc
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。 -
linux简单命令罗列
2018-09-14 09:37:43locate并不真正对硬盘上的文件系统进行查找,而是对文件名数据库进行检索,而且可以使用通配符?和* find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作 whereis...- cat命令:将文件内容一次全输出显示在屏幕上。
- more命令:分屏显示文件内容,每次只显示一屏,只允许向前浏览。
- less命令:与more相似,并且支持向前,向后浏览。
- locate并不真正对硬盘上的文件系统进行查找,而是对文件名数据库进行检索,而且可以使用通配符?和*
- find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作
- whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
- type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令
- last命令 查看曾经登录到此系统的用户清单
- uptime 命令查看当前系统的启动时间 和 负载
- w 查看登录用户和行为
- fg:将后台中的命令调至前台继续运行
- bg:将一个在后台暂停的命令,变成继续执行
- ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停
- tar是操作.tar的命令gzip是压缩.gz压缩包的命令compress:压缩.Z文件uncompress:解压缩.Z文件
- tail -n +K是输出从第K行开始的内容 tail -n K是输出最后K行的内容 tail -f 可以方便的查阅正在改变的日志文件。
- route netstat -route 查看Linux主机的默认路由 路由信息是由{目的主机所在的网络地址,下一跳地址,子网掩码}组成
- sar -u输出显示CPU信息。-u选项是sar的默认选项。该输出以百分比显示CPU的使用情况
- dd命令 : 作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
- 参数:if 输入文件(或设备名称) of 输出文件(或设备名称)
- 将文件file1拷贝到文件file2中命令如下: dd if=file1 of=file2
- jobs 命令查看后台进程作业ID的指令
系统监控相关
-
DOS目录操作命令
2011-04-12 19:52:46一.有关DOS命令的基本约定 1.Dos 命令不分大小写。 2.Dos 命令必须在命令提示符下、批处理文件或系统配置文件中执行。...5.某些Dos命令允许使用通配符。“?”代表一个合法的字符或空字符,“*”... -
Ubuntu小技巧14--sed命令详解
2020-02-16 21:29:55Ubuntu小技巧14--sed命令详解1 sed使用说明2 正则表达式通配符3 命令选项3.1 命令3.2 选项4 使用案例及注意事项4.1 使用案例4.2 注意事项5 说明 Sed是一个简化的非交互式编辑器,它是linux下三大文本处理工具之一... -
DOS命令之ren
2013-06-06 11:33:46D:\test>ren /? 重命名文件。 RENAME [drive:][path]filename1 filename2. REN [drive:][path]filename1 filename2. 请注意,您不能为目标文件指定新的驱动器或路径。...(2)允许使用通配符更改一组文件名 -
cmd操作命令和linux命令大全收集
2012-04-24 11:58:23open ip 连接到IP(属telnet登陆后的命令) telnet 在本机上直接键入telnet 将进入本机的telnet copy 路径文件名1 路径文件名2 /y 复制文件1到指定的目录为文件2,用参数/y就同时取消确认你要改写一份现存目录... -
VF辅导:内存变量操作命令及文件操作命令
2011-04-23 17:35:17在文件名不不允许使用通配符. (2).若选用问号"?",半打开对话框,可从中选择要删除的文件进行删除操作.例如,在命令窗口输入erase 回车,将弹出对话框. 6.显示文本文件: 格式:type 文本文件名 [to printer|to ... -
update yum 到指定版本_CentOS 使用 yum update 更新时保留特定版本的软件
2020-12-23 16:45:44有时需要保留特定版本的软件不升级,但升级其他软件,这时就需求用到下面的技巧。当 CentOS/RHEL/Fedora 下的 Linux 服务器使用 yum update 时命令如何排除选定的包呢? Yum使用 /etc/yum/yum.conf...允许使用通配符... -
windows实用dos命令大全
2010-12-10 21:27:35(2)允许使用通配符更改一组文件名或扩展名。 (五)FC——文件比较命令 1.功能:比较文件的异同,并列出差异处。 2.类型:外部命令 3.格式:FC[盘符:][路径名]〈文件名〉[盘符:][路径名][文件名][/A]... -
MySQL命令大全
2018-01-15 11:19:17USAGE: 只允许登录–其它什么也不允许做。 ——————— MYSQL常用命令 有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令... -
dos命令全集(二)
2010-10-03 21:37:00四) REN——文件改名命令1.功能:更改文件名称2.类型:内部命令3.格式:REN[盘符:][路径]〈旧...(2)允许使用通配符更改一组文件名或扩展名。(五)FC——文件比较命令1.功能:比较文件的异同,并列出差异处。 -
Linux(4)常用命令
2011-12-08 20:58:10Linux(4) 在文件正文中查找指定的字符串:grep命令 语法:grep[参数] 查找模式 文件名[文件名] ...在搜索的文件名中允许使用通配符。 参数: -c:只是显示匹配行的行数 -i:匹配时不区分大小写, -
入门学习Linux常用必会60个命令实例详解doc/txt
2011-06-09 00:08:45所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也... -
MYSQL常用命令大全
2011-05-30 13:31:24USAGE: 只允许登录--其它什么也不允许做。 --------------------- MYSQL常用命令 有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用... -
新手如何学自动化测试六(selenium 命令之文字范本匹配)
2020-07-07 16:20:35文字范本匹配 文字范本匹配其实可以理解为通配符。...selenium中需要范本的命令包括: verifyTextPresent、verifyTitle、verifyAlert、assertConfirmation、verifyText、verfyPrompt、 那么有哪些范本类... -
selenium IDE(六)selenium 命令之文字范本匹配
2018-10-09 15:47:00文字范本匹配 ======================================= 文字范本匹配其实可以理解为通配符。我想大家都用过windows 系统自带的搜索功能。 * 星号代表一个或多个字符。...selenium中需要范本的命令包括: ... -
python selenium --命令之文字范本匹配
2016-02-05 10:38:00文字范本匹配 ======================================= 文字范本匹配其实可以理解为通配符。我想大家都用过windows 系统自带的搜索功能。 * 星号代表一个或多个字符。...selenium中需要范本的命令包括: ... -
centos7安装使用Multitail(让你的日志文件看起来更多彩)
2021-01-22 10:35:03MultiTail允许您监视终端中多个窗口中的日志文件文件和命令输出,着色,过滤和合并。 更详细的描述: MulltiTail允许您查看一个或多个文件,例如原始的tail程序。不同之处在于他在您的控制台上创建多个窗口(带有... -
新手学自动化测试(六)----selenium 命令之文字范本匹配
2020-09-18 17:06:32文字范本匹配 ======================================= 文字范本匹配其实可以理解为通配符。...selenium中需要范本的命令包括: verifyTextPresent、verifyTitle、verifyAlert、assertConfirmation、veri -
win命令行,含源代码)一个直接用命令查看修改删除图片属性Exif信息的文件
2016-02-15 08:56:01唯一的问题是:jhead不是个window程式,它是个DOS程式,许多用window的人,对DOS并不熟,因此,说明jhead使用法如下: jhead这个DOS程式必需在DOS下执行,如何在windows中启动DOS? 以windowsXP为例: 开始——运行 ... -
菜鸟学自动化测试(六)----selenium 命令之文字范本匹配
2016-10-25 19:28:00文字范本匹配 ======================================= 文字范本匹配其实可以...范本也是经常被selenes命令使用的参数;范本允许你使用特殊字符来描述期望值,而不是准确的说明期望值。 selenium中需要范本的命... -
MySQL5.7创建用户并授权,设置允许远程连接
2020-02-24 15:57:50host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符% password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不...
-
012 MySQL学习,Python程序连接MySQL数据库
-
spark大数据分析与实战
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
FTPUpload.rar
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
优化iOS程序性能的二十五个方法
-
349. 两个数组的交集
-
【阿里天池-医学影像报告异常检测】2 特征工程
-
RapidScada从入门到精通
-
彩灯循环显示控制器实验报告.doc
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
Python内存问题:提示和技巧
-
2021-02-25
-
【Flutter】Flutter 项目中使用 Flutter 插件 ( 安装 Flutter 插件 使用 Flutter 插件 ).zip
-
Codem:用于支持硬件服务的嵌入式多核系统的软件/硬件代码签名
-
互补条纹投射技术实现变形检测方法研究
-
龙芯实训平台应用实战(希云)
-
元素水平垂直居中的几种方式
-
一天学完MySQL数据库
-
Windows系统管理