http://blog.51yip.com/linux/1462.html#

#!/usr/bin/expect -f

set ip 192.168.1.201

set password meimiao1905

set timeout 10

spawn ssh root@$ip

expect {

"*yes/no" { send "yes\r"; exp_continue}

"*password:" { send "$password\r" }

}

interact

expect是一种能够按照脚本内容里面设定的方式与交互式程序进行“会话”的程序。根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答。它是一种可以提供“分支和嵌套结构”来引导程序流程的解释型脚本语言。

shell功能很强大,但是不能实现有交互功能的多机器之前的操作,例如ssh和ftp.而expect可以帮助我们来实现.

一,安装expect

yum install expect

其实expect根bash形势上差不多的.

二,实例

1,ssh实现自动登录,并停在登录服务器上

查看复制打印?

1.#!/usr/bin/expect -f

2. set ip [lindex $argv 0 ]     //接收第一个参数,并设置IP

3. set password [lindex $argv 1 ]   //接收第二个参数,并设置密码

4. set timeout 10                   //设置超时时间

5. spawn ssh root@$ip       //发送ssh请滶

6. expect {                 //返回信息匹配

7. "*yes/no" { send "yes\r"; exp_continue}  //第一次ssh连接会提示yes/no,继续

8. "*password:" { send "$password\r" }      //出现密码提示,发送密码

9. }

10. interact          //交互模式,用户会停留在远程服务器上面.

运行结果如下:

查看复制打印?

1.root@ubuntu:/home/zhangy# ./test.exp 192.168.1.130 admin

2.spawn ssh root@192.168.1.130

3.Last login: Fri Sep  7 10:47:43 2012 from 192.168.1.142

4.[root@linux ~]#

这个例子有统一的接口,根据IP和密码可以连接到不同的机器.如果你嫌输入IP和密码麻烦,看下面的例子

查看复制打印?

1.#!/usr/bin/expect -f

2. set ip 192.168.1.130

3. set password admin

4. set timeout 10

5. spawn ssh root@$ip

6. expect {

7. "*yes/no" { send "yes\r"; exp_continue}

8. "*password:" { send "$password\r" }

9. }

10. interact

运行结果如下:

查看复制打印?

1.root@ubuntu:/home/zhangy# ./web.exp

2.spawn ssh root@192.168.1.130

3.Last login: Fri Sep  7 12:59:02 2012 from 192.168.1.142

4.[root@linux ~]#

2,ssh远程登录到服务器,并且执行命令,执行完后并退出

查看复制打印?

1.#!/usr/bin/expect -f

2. set ip 192.168.1.130

3. set password admin

4. set timeout 10

5. spawn ssh root@$ip

6. expect {

7. "*yes/no" { send "yes\r"; exp_continue}

8. "*password:" { send "$password\r" }

9. }

10. expect "#*"

11. send "pwd\r"

12. send  "exit\r"

13. expect eof

运行结果如下:

查看复制打印?

1.root@ubuntu:/home/zhangy# ./test3.exp

2.spawn ssh root@192.168.1.130

3.root@192.168.1.130's password:

4.Last login: Fri Sep  7 14:05:07 2012 from 116.246.27.90

5.[root@localhost ~]# pwd

6./root

7.[root@localhost ~]# exit

8.logout

9.Connection to 192.168.1.130 closed.

3,远程登录到ftp,并且下载文件

查看复制打印?

1.#!/usr/bin/expect -f

2. set ip [lindex $argv 0 ]

3. set dir [lindex $argv 1 ]

4. set file [lindex $argv 2 ]

5. set timeout 10

6. spawn ftp $ip

7. expect "Name*"

8. send "zwh\r"

9. expect "Password:*"

10. send "zwh\r"

11. expect "ftp>*"

12. send "lcd $dir\r"

13. expect {

14. "*file"  { send_user "local $_dir No such file or directory";send "quit\r" }

15. "*now*"  { send "get $dir/$file $dir/$file\r"}

16. }

17. expect {

18. "*Failed" { send_user "remote $file No such file";send "quit\r" }

19. "*OK"     { send_user "$file has been download\r";send "quit\r"}

20. }

21. expect eof

运行结果如下:

查看复制打印?

1.root@ubuntu:/home/zhangy# ./test2.exp 192.168.1.130 /var/www/www aaa.html

2.spawn ftp 192.168.1.130

3.Connected to 192.168.1.130.

4.220 (vsFTPd 2.0.5)

5.Name (192.168.1.130:root): zwh

6.331 Please specify the password.

7.Password:

8.230 Login successful.

9.Remote system type is UNIX.

10.Using binary mode to transfer files.

11.ftp> lcd /var/www/www

12.Local directory now /var/www/www

13.ftp> get /var/www/www/aaa.html /var/www/www/aaa.html

14.local: /var/www/www/aaa.html remote: /var/www/www/aaa.html

15.200 PORT command successful. Consider using PASV.

16.150 Opening BINARY mode data connection for /var/www/www/aaa.html (66 bytes).

17.226 File send OK.

18.66 bytes received in 0.00 secs (515.6 kB/s)

19.quit aaa.html has been download

20.221 Goodbye.

0

Linux expect自动登录ssh,ftp的更多相关文章

  1. 解决expect自动登录,rz和sz不能使用问题

    一.问题描述: 解决expect自动登录,rz和sz不能使用问题: 二.解决方法: 1. 临时修改环境变量: 将本地的LC_CTYPE环境变量设置成en_US export LC_CTYPE=en_U ...

  2. linux expect详解(ssh自动登录)

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

  3. expect自动登录

    .安装软件 yum install expect -y .查看expect命令位置 expect命令的位置也可能是在 /usr/local/bin/expect,使用前用户应确认工具是否存在(确认方法 ...

  4. Linux实现自动登录

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

  5. iterm自动登录ssh脚本

    经常在工作中需要切换到不同的服务器去部署,或者查看日志,每次登录都要去找对应的IP和地址,非常麻烦,最终决定使用iterm2+脚本来实现自动登录. 1.iterm2(下载安装不再介绍http://ww ...

  6. Linux开机自动登录(文本模式)

    • Linux系统启动登录过程 以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下: 1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等 ...

  7. expect命令自动登录ssh

    expect是简单的工具原因,依赖于tcl. 直接apt安装就行. 四个关键字: spawn,派生出新进程. expect,期待得到的字符串,可以模式匹配. send,向进程发送字符串. intera ...

  8. Windows上安装配置SSH教程(5)——win10下使用Cygwin+Expect自动登陆ssh

    1.安装Cygwin,安装上Tcl和Expect两个工具. 可以使用apt-cyg命令安装,也可以在安装Cygwin的时候选中这两个包. 命令安装的话使用下面的两个命令: apt-cyg instal ...

  9. Kali Linux 初始化配置:Apache2 /SSH /FTP

    Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.Kali Linux预装了许多渗透测试软件,包括nmap .Wireshark .John the Ripper, ...

随机推荐

  1. 解Linux SSH命令大全,新手必看SSH命令

    下面介绍一些基本的常用的Linux SSH命令,都是一些很简单的Linux SSH命令,新手掌握了这几个,一般管理一般的vps或者linux主机就可以了!     我们的教程介绍了putty的使用方法 ...

  2. php-cli和php-fpm的关系是什么?

    CLI是命令行版本.FPM是作为Apache或者Nginx等服务器软件处理PHP文件的扩展. PHP的默认版本是不支持线程安全的,这个线程安全问题可以去了解PHP扩展开发方面的相关知识,这是因为C语言 ...

  3. 怎么从一台电脑的浏览器输入地址访问另一台电脑服务器(WAMP服务器已搭建,PHPSTORM装好了)

    服务器电脑WAMP环境搭建好了,浏览器输入LOCALHOST就能访问本地 WAMP/WWW 目录下PHP文件,怎么样才能从另一台电脑通过浏览器访问呢?求详细步骤... glwbdtb | 浏览 180 ...

  4. 数据库复习总结(17)-T-Sql编程

    T-SQL(SQL SERVER) 百度百科:(即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程序与 SQL Server 沟通的主 ...

  5. spring 事务隔离级别配置

    声明式的事务处理中,要配置一个切面,即一组方法,如 其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED.SUPPO ...

  6. nginx中支持.htaccess并禁止php在特定目录无法运行

    在nginx.conf中的server里面 include /yjdata/www/thinkphp/.htaccess; 在对应的目录下面创建.htaccess,并填写以下内容,(image是跟目下 ...

  7. python3 第四章 - 输入与输出

    1.输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字. print('hello, world') 输入以上代码,执行后输出: hello, world 事实上,任何基本类型都可 ...

  8. 链表法解决hash冲突

    /* @链表法解决hash冲突 * 大单元数组,小单元链表 */ #pragma once #include <string> using namespace std; template& ...

  9. Linux指令--traceroute,netstat,ss

    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一 ...

  10. Android ui 透明度设置

    格式如#00FFFFFF,前两位代表不透明度的十六进制.00表示完全透明,FF就是全不透明.依次递增. <?xml version="1.0" encoding=" ...