expect 用法

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。

  脚本代码如下:

  ##############################################

  #!/usr/bin/expect

  set timeout 30

  spawn ssh -l username 192.168.1.1

  expect "password:"

  send "ispass\r"

  interact

  ##############################################

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

  这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。

  注意:这一行需要在脚本的第一行。

  2. [set timeout 30]

  基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒

  3. [spawn ssh -l username 192.168.1.1]

  spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。

  它主要的功能是给ssh运行进程加个壳,用来传递交互指令。

  4. [expect "password:"]

  这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒

  5. [send "ispass\r"]

  这里就是执行交互动作,与手工输入密码的动作等效。

  温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。

  6. [interact]

  执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行

  #!/usr/bin/expect #注意安装的路径,不确定 whereis expect 一下

  # Change a login shell to bash

  set user [lindex $argv 0]

  spawn bash $user

  expect "]:"

  send "/bin/bash "

  expect eof

  exit

自动scp 的例子

在备份服务器上编辑脚本,并添加任务计划

set DATE [exec date +%Y%m%d%k]

set password 123456

spawn scp -r [email protected]:/home/backup/mysqls_$DATE.sql.gz  /home/backup/mysql/

set timeout 300

expect "[email protected]‘s password:"

set timeout 300

send "$password\r"

set timeout 300

send "exit\r"

expect eof

任务计划:0 6 * * * /home/script/Mysql_backup.sh >/dev/null 2>&1

时间: 2024-10-03 10:42:10

expect 用法的相关文章

expect用法

1. [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行.这里的expect其实和linux下的bash.windows下的cmd是一类东西. 注意:这一行需要在脚本的第一行. 2. [set timeout 30] 基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒 .timeout -1 为永不超时 3. [spawn ssh -l username 192.168.1.1] spawn是进入expect环境后才可以执行的

Linux expect 用法

用法 1. [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行.这里的expect其实和Linux下的bash.windows下的cmd是一类东西. 注意:这一行需要在脚本的第一行. 2. [set timeout 30] 基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒.timeout -1 为永不超时,默认情况下,timeout是10秒: 3. [spawn ssh -l username 192.168.1.1] sp

expect spawn、linux expect 用法小记

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: 1 #!/usr/bin/expect 2 set timeout 30 3 spawn ssh -l username 192.168.1.1 4 expect "password:" 5 send "ispass\r" 6 interact 1. [#!/usr/bin/expec

【转】shell expect spawn、linux expect 用法小记 看着舒服点

使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn ssh -l username 192.168.1.1 expect "password:" send "ispass\r&

expect用法举例

1 expect -c 'spawn su - oracle -s check_tablespace.shexpect "Password:"send "oracle\n\r"expect "eof"exit' 2 文件形式: #!/usr/bin/expect -fspawn su - oracle -s check_tablespace.shexpect "Password:"send "oracle\n\r&q

linux expect案例用法

EXPECT 用法 expect是基于TCL的相对简单的一个免费脚本编程工具语言,用来实现自动和交互式任务进行通信,无需人的 手工干预,比如ssh\FTP等,这些程序正常情况都需要手工与它们进行交互,而使用EXPECT就可以模拟人手工交互的过程,实现自动的 和远程的程序交互,从而达到自动化的目的. EXPECT是一个用来实现自动交互功能的软件套件(EXPECT is a software suite for automating interactive tools) 虽然,使用C.perl等一样

UNIX/LINUX使用expect实现人机自动交互功能

expect用法 [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来执行.这里的expect其实和linux下的bash.windows下的cmd是一类东西. 注意:这一行需要在脚本的第一行. [set timeout 30] 基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒 .timeout -1 为永不超时 [spawn ssh -l username 192.168.1.1] spawn是进入expect环境后才可以执行的

Linux - 通过expect工具实现脚本的自动交互

目录 1 安装expect工具 2 expect的常用命令 3 作用原理简介 3.1 示例脚本 3.2 脚本功能解读 4 其他脚本使用示例 4.1 直接通过expect执行多条命令 4.2 通过shell调用expect执行多条命令 5 spawn not found 的解决 1 安装expect工具 expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是: spawn启动指定进程 -> expect获取指定关键字

linux安全

在平时的工作环境中,网络中不时有搞怪man去搞一些破坏,如修改我们的二进制程序,洪水攻击等等,当我们遇到这些问题我们如何去解决它呢? 一.AIDE 当一个入侵者进入了你的系统并且种植了木马,通常会想办法来隐蔽这个木马(除了木马自身的一些隐蔽特性外,他会尽量给你检查系统的过程设置障碍),通常入侵者会修改一些文件,比如管理员通常用ps -aux来查看系统进程,那么入侵者很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以使用ps命令查不到正在运行的木马程序.如果入侵者发现管理员正在运行cro