首页 > 编程知识 正文

python中remove函数的用法,spawn未找到命令

时间:2023-05-05 03:52:45 阅读:107808 作者:1637

1. [#! /usr/sfdfj/expect]

该行表示操作系统脚本中的代码将使用该shell执行。 这里的expect实际上与linux上的bash、windows上的cmd是同一种类的。

注:此行必须位于脚本的第一行。

2. [set timeout 30]

set自定义变量名:设置超时时间。 现在,请记住他的时间单位是“秒”。 timeout -1不会超时

3.[ spawn ssh-l username 192.168.1.1 ]

spawn是进入expect环境后可以执行的expect内部命令,如果没有安装expect,或者直接在默认shell下运行,将找不到spawn命令。 所以请不要用“which spawn”等命令寻找spawn命令。

主要功能是向ssh执行进程添加shell,并传递交互式命令。 开始新的过程可以理解

4. [expect 'password:']

从进程接收字符串。 这里的expect是expect的内部命令。 expect的shell命令与内部命令相同,但不是功能。 此命令确定上次输出是否包含字符串“password:”,如果有,则立即返回;否则,请稍等一会儿,然后返回。 在这里的等待时间是之前设定的30秒。

5. [send 'ispassr']

send接收字符串参数并将其发送到进程。 在此处执行交互式操作,就像手动输入密码一样。 请不要忘记在字符串的末尾加上“r”。 表示“回车键”。

6. [interact]

允许用户操作; 运行完成后保持交互状态,并将控制权交给控制台。 此时可以手动操作。 如果没有这句话,登录完成后退出,而不是保留在远程终端上。

7.$argv参数数组

expect脚本可以接收从bash传递的参数。 可以使用[lindex $argv n]获取。 n从0开始,分别表示第一个、第二个、第三个.参数

7 .以下expect脚本示例

运行此文件./launch.exp 1 2 3

画面上分别印刷着参数

send_user用于向用户发送内容。

参数的运用有很多技巧

例如,$argc中存储了参数,args被结构化为一个列表,存在argv。 $argv0将初始化为脚本名称。

另外,如果你在第一行(#! 该行)-d (调试参数)用于输出在运行时有用的信息

例如,你可以看到

argv [0]=/usr/sfdfj/expect argv [1]=-d argv [2]=./launch.exp argv [3]=1argv [4]=2argv [5]=3

也可以使用它们传递参数

8.

expect的命令行参数参考的是c语言,与bash shell略有不同。 其中$argc是命令行参数的数量,$argv0是脚本名称本身,$argv是命令行参数。 [lrange$argv0]表示第一个参数,[lrange $argv 0 4]是第一个到第五个参数。 与c语言的不同之处在于,$argv不包含脚本名称本身。

9.

exp_continue的用法

#! /usr/sfdfj/expect -f

set ipaddr 'localhost '

设置密码格式'

spawn ssh root@$ipaddr #spawn意味着执行命令,不存在于expect内命令或shell中

expect { (

' yes/no' { send 'yesr '; exp_continue}

' password : ' { send ' $ passwdr ' }

}

expect ']# '

意味着发送send 'touch a.txtr' #命令

send 'exitr '

导出

退出

一些示例:

1、

expect最常见的语法是来自tcl语言的模式-动作。 这个语法非常灵活。 以下,对各自的语法进行说明。

单分支模式语法:

expect 'hi' {send 'You said hi'}

如果匹配hi,将输出“you said hi”

多分支模式语法:

expect 'hi' { send 'You said hin' }

' hello' { send 'Hello yourselfn' }

' bye' { send 'dat was unexpectedn' }

匹配hi、hello、bye中的任意一个字符串时,执行对应的输出。 和以下的写法相同。

expect { (

' hi' { send 'You said hin'}

' hello' { send 'Hello yourselfn'}

' bye ' { send ' thatwasunexpectedn ' }

}

2、

所有demo都与标准输入和输出进行交互,但我们希望他能与某个进程进行交互。 spawm命令用于启动新的进程。 spawn后的send和expect命令与spawn打开的进程进行交互。 将上述send和expect命令组合使用,可以看到更复杂的段。

set timeout -1

spawn ftp ftp.test.com //打开用户连接到远程ftp服务器的新进程

expect 'Name' //进程返回Name时

在send 'userr' //进程中输入anonymousr

expect 'Password:' //进程返回Password:时

在send '123456r' //进程中输入don@libes.comr

expect 'ftp ' //进程返回ftp时

在send 'sfdfjaryr' //进程中输入sfdfjaryr

expect 'ftp ' //进程返回ftp时

在send 'get test.tar.gzr' //进程中输入get test.tar.gzr

此代码的作用是登录到ftp服务器FTP.yldsb.net并以二进制格式下载服务器上的test.tar.gz文件。 程序有详细的注释。

3、

下载ftp文件后,也可以保留ftp命令行并手动执行后续命令。 interact可以实现这些目的。 以下demo在自动登录ftp后允许用户交互。

spawn ftp ftp.test.com

expect 'Name '

发送用户 r '

快速密码: '

send '123456r '

内部

4、

以下脚本实现了从机器a登录到机器b,运行机器b上的pwd命令,停留在机器b上,等待用户操作。

#! /home/tools/sfdfj/64/expect -f

set timeout -1

spawn ssh $BUser@$BHost

expect ' * password : ' { send ' $ passwordr ' }

expect '$*' { send 'pwdr' }

内部

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。