几种实现自动telnet/ssh/ftp的脚本
来源:互联网 发布:3个月能学会php吗 编辑:程序博客网 时间:2024/06/07 11:27
最近可能需要做一些自动化巡检的脚本,所以需要使用到自动telnet/ssh/ftp之类的东西,google了半天后整理了一下几种实现方式:
1、首先出场的就是比较经常使用的shell脚本方式,如:
(sleep 1;echo "public";sleep 1;echo "public";sleep 1;echo "/home/public/myscripts/checkos.sh";sleep 1;echo "exit") | telnet 192.168.0.220
优点:简单,容易实现,输出是实时的
缺点:需要估算好命令的执行时间,如果命令需要执行10s,而sleep 只有5s的话,那么正在执行的命令就会被中断
2、使用perl脚本实现,如:
#!/usr/bin/perl -wuse strict;use Net::Telnet;#登录信息#注意,$prompt是登陆后的命令提示行,如果匹配不上,脚本将会timeoutmy $password = 'public';my $username = 'public';my $prompt = '/\[.+\]\$ $/';my $host = '192.168.0.220';my $cmd1 = '/usr/bin/who';my $cmd2 = '/bin/ls -l';my $cmd3 = '/home/public/myscripts/checkos.sh AUTO ';#连接并登录到服务器my $conn = new Net::Telnet( Timeout=>60, Prompt=>$prompt,);$conn->open($host);$conn->login($username,$password);#分别执行$cmd1、$cmd2和$cmd3命令,并输出结果my @output = $conn->cmd($cmd1);print "Output:@output";@output = $conn->cmd($cmd2);print "Output:@output";@output = $conn->cmd($cmd3);print "Output:@output";#断开连接$conn->close;
注释:需要先安装perl-Net-Telnet模块
优点:perl脚本编程的好处就不用我在赘述了,不需要估算命令执行时间,因为它会等的命令执行完后才返回
缺点:交互不是实时的,因为它需要等待命令执行完后才一次性返回,但是这不算什么大的缺点,因为如果作为批量脚本的话是不需要一对一实时输出的。
3、第三种方式就是使用传说中的expect来实现,如:
#!/usr/bin/expect -cset timeout 2set TERM xtermset SERVER [lindex $argv 0]set USER [lindex $argv 1]set PASSWD [lindex $argv 2]if { $argc != 3 } { send_user "Usage:server username password \n" send_user $SERVER exit}spawn telnetexpect "telnet> "send "open $SERVER\n"expect "ogin:"send "$USER\n"expect "assword:"send "$PASSWD\n"expect "]$"send "ls -ltr\n"interact { timeout 10 {send "exit\n"}}优点:实现简单,谁用谁知道,个人比较推荐这个方式。
缺点:好像没什么缺点,expect设计的目的就是用来做这个的
4、最后一种实现方式是google出来的,不过我执行不出结果来,但是还是把代码贴出来吧,如:
#!/usr/bin/python -cimport telnetlibhost = '192.168.0.220'user = 'public'password = 'public'commands = ['cd bin','ls -ltr']tn = telnetlib.Telnet(host)tn.read_until("ogin:")tn.write(user + "n")tn.read_until("assword:")tn.write(password + "n")for command in commands:tn.write(command+"n")tn.write("exitn")print tn.read_all()print 'Finish!'
优点:我只能说python的强悍性
缺点:我跑不出来不知道算不算缺点,哈哈,知道的人麻烦帮忙解释一下。
- 几种实现自动telnet/ssh/ftp的脚本
- 在iterm中用expect脚本实现ssh, telnet对aix, linux的自动登录
- Ant脚本 ftp、telnet、ssh 使用
- shell脚本:自动FTP和TELNET
- telnet自动登录的脚本
- 几种实现进程自动重启的脚本
- 使用脚本实现自动FTP
- ftp脚本实现ftp自动处理
- 如何用shell脚本实现自动telnet
- 如何用shell脚本实现自动telnet
- ftp telnet 自动批量
- 几种telnet自动登入的程序
- Linux/Unix实现自动ftp的shell脚本
- UNIX上自动FTP任务的脚本实现
- Windows上自动FTP任务的脚本实现
- 使用Shell脚本实现ftp的自动上传下载
- 使用Shell脚本实现ftp的自动上传下载
- Linux使用Shell脚本实现ftp的自动上传下载
- ./configure && make && make install详解
- linux下如何创建固定大小的文件
- linux内核编译与内核模块
- Tomcat配置虚拟目录和虚拟主机
- libnids libpcap libnet 安装
- 几种实现自动telnet/ssh/ftp的脚本
- [Android 界面] setContentView和inflate区别!!!
- 黑马程序员-java中静态变量,方法的使用实例
- jvm运行原理实例说明
- ubuntu
- Could not apply the stored configuration for monitors
- Segmentation fault 段错误 原因简单总结
- 利用HashMap实现踢人功能(JAVA)
- Bash Shell: Take Control of PS1, PS2, PS3, PS4 and PROMPT_COMMAND