2014年第一个脚本,哈哈!!! expect实现远程主机自动执行命令脚本:

#!/usr/bin/expect --

if { [llength $argv] < 4 } {
puts "Usage: $argv0 ip user passwd port commands timeout"
exit 1
} match_max 600000 set ip [lindex $argv 0]
set user [lindex $argv 1]
set passwd [lindex $argv 2]
set port [lindex $argv 3]
set commands [lindex $argv 4]
set timeoutflag [lindex $argv 5] set yesnoflag 0
set timeout $timeoutflag for {} {1} {} {
# for is only used to retry when "Interrupted system call" occured spawn /usr/bin/ssh -q -l$user -p$port $ip expect { "assword:" {
send "$passwd\r"
break;
} "yes/no)?" {
set yesnoflag 1
send "yes\r"
break;
} "FATAL" {
puts "\nCONNECTERROR: $ip occur FATAL ERROR!!!\n"
exit 1
} timeout {
puts "\nCONNECTERROR: $ip Logon timeout!!!\n"
exit 1
} "No route to host" {
puts "\nCONNECTERROR: $ip No route to host!!!\n"
exit 1
} "Connection Refused" {
puts "\nCONNECTERROR: $ip Connection Refused!!!\n"
exit 1
} "Connection refused" {
puts "\nCONNECTERROR: $ip Connection Refused!!!\n"
exit 1
} "Host key verification failed" {
puts "\nCONNECTERROR: $ip Host key verification failed!!!\n"
exit 1
} "Illegal host key" {
puts "\nCONNECTERROR: $ip Illegal host key!!!\n"
exit 1
} "Connection Timed Out" {
puts "\nCONNECTERROR: $ip Logon timeout!!!\n"
exit 1
} "Interrupted system call" {
puts "\n$ip Interrupted system call!!!\n"
}
}
} if { $yesnoflag == 1 } {
expect {
"assword:" {
send "$passwd\r"
} "yes/no)?" {
set yesnoflag 2
send "yes\r"
}
}
} if { $yesnoflag == 2 } {
expect {
"assword:" {
send "$passwd\r"
}
}
} expect {
"]" {send "$commands \r"}
"assword:" {
send "$passwd\r"
puts "\nPASSWORDERROR: $ip Password error!!!\n"
exit 1
}
} expect {
"]" {send "sleep 1 \r"}
} expect {
"]" {send "exit\r"}
} expect eof {
puts "OK_SSH: $ip\n"
exit 0;
}

用法:

./ssh.exp
Usage: ./ssh.exp ip user passwd port commands timeout

expect实现远程主机自动执行命令脚本的更多相关文章

  1. [转] 打开 CMD 时自动执行命令

    [转] 打开 CMD 时自动执行命令 问题描述 在Windows中打开一个command-prompt时,我正在寻找一种方法来执行一些控制台命令,特别是设置一些命令别名. 例如,当打开command- ...

  2. windows 10 如何设定计划任务自动执行 python 脚本?

    我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...

  3. centos7 开机自动执行shell脚本

    centos7 开机自动执行shell脚本 90十80 关注 2018.12.23 09:37 字数 309 阅读 485评论 0喜欢 0 自己新建一个脚本,如centnet-service.sh 经 ...

  4. Jenkins自动执行python脚本输出测试报告

    前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作. 借助Jenkins,我们可以结合 Git/SVN 自动拉取 ...

  5. windows开机自动执行bat脚本

    一.以windows下备份sql数据库为例,开机自动执行.bat脚本 1.新建dump.bat文件,文件中的代码如下: set YYYYmmdd=%date:~0,4%%date:~5,2%%date ...

  6. 自动执行Python脚本

    一.自动执行Python脚本(前提条件是电脑已安装对应的Python程序) 1.1.win+R-输入cmd在输入where python查看Python的安装位置 C:\Users\ASUS\AppD ...

  7. windows开机自动执行bat脚本启动cmd命令窗口并执行命令,最后自动关闭cmd命令窗

    先说bat脚本吧,随便在桌面建一个文本文档,在里面写脚本,内容是,先启动cmd命令窗,并执行一个命令,最后自动关闭cmd窗,如下: ---------------------------------- ...

  8. 详解如何在 Linux 启动时自动执行命令或脚本

    我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情.按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟.当你注销或者关机时 ...

  9. BATCH+VBS脚本自动执行命令

    打开cmd,然后执行run.bat s 1就会执行tmpsw.vbs的内容,1是作为id传进去的参数. run.bat: @echo off set type=%1 set id=%2 :打开一个te ...

随机推荐

  1. leetcode 206 反转链表 Reverse Linked List

    C++解法一:迭代法,使用前驱指针pre,当前指针cur,临时后继指针nxt: /** * Definition for singly-linked list. * struct ListNode { ...

  2. delphi : 窗体的close,free,destroy

    一.我用application.create(TForm2,Form2)语句,创建了Form2,可是调用了Form2.close后,重新调用Form2.show. 刚才所创建的Form2仍然存在.问为 ...

  3. linux 进程间共享内存示例

    写入端: #include <iostream> #include <unistd.h> #include <stdlib.h> #include <stdi ...

  4. Java ——扩展:内部类 匿名内部类 IO file 设计模式

    内部类的拓展 定义类or方法内部的类 最外层的类只能使用public和默认修饰 class Demo { class A { } public static void main(String[] ar ...

  5. 【Linux开发】arm-linux-gnueabihf-gcc下载

    原文地址:http://www.veryarm.com/arm-linux-gnueabihf-gcc veryarm是个不错的网站,里面介绍了很多相关的基础知识. arm-linux-gnueabi ...

  6. 【模板】最长上升子序列(LIS)及其优化 & 洛谷 AT2827 LIS

    最长上升子序列 传送门 题意 对于给定的一个n个数的序列,找到它的一个最长的子序列,并且保证这个子序列是由低到高排序的. 例如,1 6 2 5 4 6 8的最长上升子序列为1 2 4 6 8. 基本思 ...

  7. Y7000 安装ubuntu16.04.6 的tips :禁用nouveau 、Wifi 问题 、nvidia 驱动安装

    由于最近要跑DeepLearning 所以在自己的Y7000上装一个Ubuntu ,自己碰了好多壁 写下来以防止自己忘掉以便后续再用! 配置:i7-8750H +GeForce GTX 1050Ti ...

  8. Centos7 yum安装LNMP

    1.Centos7系统库中默认是没有nginx的rpn包的,所以我们需要先更新下rpm依赖库 (1):使用yum安装nginx,安装nginx库 rpm -Uvh http://nginx.org/p ...

  9. linux下的变量规则

    1.变量名可以由字母.数字和下划线组成,但是不能以数字开头: 2.变量在命名时,默认情况下为字符型: 3.为变量赋值时,等号两边不能有空格: 4.如果要增加变量的值,可以进行变量的叠加,不过需要将变量 ...

  10. luogu P5331 [SNOI2019]通信

    传送门 有匹配次数限制,求最小代价,这显然是个费用流的模型.每个点暴力和前面的点连匹配边,边数是\(n^2\)的. 然后发现可以转化成一个set,每次加入一个点,然后入点对set里面的出点连边.这个s ...