Linux expect自动登录ssh,ftp
【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的更多相关文章
- 解决expect自动登录,rz和sz不能使用问题
一.问题描述: 解决expect自动登录,rz和sz不能使用问题: 二.解决方法: 1. 临时修改环境变量: 将本地的LC_CTYPE环境变量设置成en_US export LC_CTYPE=en_U ...
- linux expect详解(ssh自动登录)
shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...
- expect自动登录
.安装软件 yum install expect -y .查看expect命令位置 expect命令的位置也可能是在 /usr/local/bin/expect,使用前用户应确认工具是否存在(确认方法 ...
- Linux实现自动登录
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: #!/usr/b ...
- iterm自动登录ssh脚本
经常在工作中需要切换到不同的服务器去部署,或者查看日志,每次登录都要去找对应的IP和地址,非常麻烦,最终决定使用iterm2+脚本来实现自动登录. 1.iterm2(下载安装不再介绍http://ww ...
- Linux开机自动登录(文本模式)
• Linux系统启动登录过程 以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下: 1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等 ...
- expect命令自动登录ssh
expect是简单的工具原因,依赖于tcl. 直接apt安装就行. 四个关键字: spawn,派生出新进程. expect,期待得到的字符串,可以模式匹配. send,向进程发送字符串. intera ...
- Windows上安装配置SSH教程(5)——win10下使用Cygwin+Expect自动登陆ssh
1.安装Cygwin,安装上Tcl和Expect两个工具. 可以使用apt-cyg命令安装,也可以在安装Cygwin的时候选中这两个包. 命令安装的话使用下面的两个命令: apt-cyg instal ...
- Kali Linux 初始化配置:Apache2 /SSH /FTP
Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统.Kali Linux预装了许多渗透测试软件,包括nmap .Wireshark .John the Ripper, ...
随机推荐
- Python 3 利用机器学习模型 进行手写体数字识别
0.引言 介绍了如何生成数据,提取特征,利用sklearn的几种机器学习模型建模,进行手写体数字1-9识别. 用到的四种模型: 1. LR回归模型,Logistic Regression 2. SGD ...
- NSDateFormatter相关整理
//实例化一个NSDateFormatter对象NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; //设定时间格式,这里可 ...
- mybatis_SQL映射(4)鉴别器
摘录自:http://blog.csdn.net/y172158950/article/details/17505739 鉴别器:有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的 ...
- 一分钟搭建Vue2.0+Webpack2.0多页面项目
想要自己一步步搭建的比较麻烦,不是很推荐,最少也要使用vue-cli,在其基础上开始搭建,今天我的主题是一分钟搭建,那么常规方法肯定不能满足的, 而我用的方法也很简单,就是使用已经配置完成的demo模 ...
- win7 mysql 数据库轻松实现数据库定时备份
本地备份: 第一步: 安装一个mysql. 第二步: 在命令行中配置mysql 打开环境变量将mysql 安装路径配置到path中 第三部: cmd 中输入:mysqldump -uroot -p12 ...
- Redis 2种持久化模式的缺陷
http://blog.csdn.net/hexieshangwang/article/details/47254087 一.RDB持久化模式缺陷 1.问题描述: 并发200路,模拟不断写Redis, ...
- background是什么样式?
background是什么样式? 给标签添加背景图片 分为: background: url("图片路径"); #添加图片 background-position: xpx ...
- python_如何在循环引用中管理内存?
案例: python中通过引用计数来回收垃圾对象,在某些环形数据结构(树,图--),存在对象间的循环引用,比如树的父节点引用子节点,子节点同时引用父节点,此时通过del掉引用父子节点,两个对象不能被立 ...
- TDD入门demo
OK,前面的博客整理了一系列的junit相关内容,这里举一个例子TDD实际的编码例子,不管实际编码中是否使用TDD,个人觉得这种思想必须要有. 我们不一定在写业务代码之前一定要说是把测试类都写出来,至 ...
- sed&awk第二版读书笔记
1. POSIX标准对正则表达式字符和操作符的含义进行了形式化.这种标准定义了两类正则表达式:基本的正则表达式(BRE),grep和sed使用这种正则表达式;扩展的表达式,egrep和awk使用这种正 ...