`

远程运行脚本

 
阅读更多
#!/usr/bin/expect  -- 
####################################
# Run Remote Script
# Usage: ./ssh.exp ip user passwd port commands timeout
####################################

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 ssh -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"}
	">" {send "$commands \r"}
	"$ " {send "$commands \r"}
	"assword:" {
		send "$passwd\r"
		puts "\nPASSWORDERROR: $ip PASSWORD ERROR!!!\n"
		exit 1
	}
}

expect {
	"#" {send "sleep 0 \r"}
	">" {send "sleep 0 \r"}
	"$ " {send "sleep 0 \r"}
}

expect {
	"#" {send "exit\r"}
	">" {send "exit\r"}
	"$ " {send "exit\r"}
}

expect eof {
	puts "ABS_OK_SSH: $ip\n"
	exit 0;
}

 

分享到:
评论

相关推荐

    一个SSH批量远程执行脚本

    batssh是一个在Linux系统下的批量远程执行脚本工具 使用例子: batssh -f /tmp/all_hosts "service iptables stop

    ssh远程执行脚本

    在这个场景中,我们讨论的是如何使用SSH来远程执行脚本,特别是在多台Linux服务器之间进行批量操作。这个过程通常涉及到几个关键步骤,包括配置SSH免密登录和编写能够跨主机执行命令的shell脚本。 首先,让我们详细...

    Delphi远程调用服务的示例(客户端和服务端),包含如何远程执行sql并返回结果,远程执行脚本并返回结果

    Delphi远程调用服务的示例(客户端和服务端),包含如何远程执行sql并返回结果,远程执行脚本并返回结果。 服务端每个业务模块均以DataModule为基类实现,调用动态加载业务模块的方式执行业务操作并返回结果。

    开启远程桌面脚本

    标题中的“开启远程桌面脚本”指的是利用编程脚本来自动启用Windows操作系统的远程桌面功能。在Windows系统中,远程桌面允许用户通过网络连接到另一台计算机,进行远程操控和管理。这种功能对于IT管理员尤其有用,...

    适用所有Win系统修改远程桌面端口脚本.bat

    二、使用此脚本修改端口无需重启电脑服务器,如果是远程执行脚本会在远程重启前提示,脚本会自动断续执行,等待30秒重新使用新端口恢复远程连接即可; 三、远程端口自定义,当输入系统存在的端口修改时会自动提示...

    通过SSHPASS执行命令及相关脚本

    标题中的“通过SSHPASS执行命令及相关脚本”是指在Linux环境下使用`sshpass`工具进行非交互式SSH登录并执行远程命令的技术。`sshpass`是一个命令行实用程序,它允许用户在不手动输入密码的情况下,通过SSH连接执行...

    远程执行命令脚本,可传密码

    linux下远程执行命令脚本,可传密码,提升权限

    自动化测试-远程启动QTP脚本

    ### 自动化测试-远程启动QTP脚本 在当今快速发展的软件开发领域,自动化测试已成为确保产品质量不可或缺的一部分。为了提高测试效率并更好地模拟实际应用环境,分布式执行自动化测试用例变得越来越常见。本文将详细...

    用于开启远程桌面脚本

    ### 用于开启远程桌面脚本的知识点解析 #### 背景与应用场景 在现代办公环境中,远程桌面功能被广泛应用于远程控制、技术支持以及多地点协作等场景之中。特别是对于那些使用ghost镜像安装操作系统的计算机来说,...

    jenkins远程发布脚本

    在本场景中,"jenkins远程发布脚本"是指一个专门设计用来在Jenkins环境中执行远程操作的脚本,例如备份JAR包、启动服务、清理不再需要的JAR包以及根据名称关闭Java进程等。以下将详细介绍这些知识点: 1. **Jenkins...

    linux自动备份文件 并上传到远程服务器 脚本实现

    目标是开发一个脚本,该脚本能定期执行MySQL数据库的备份,并将这些备份文件通过FTP上传至指定的远程服务器。具体需求包括: 1. **创建备份目录:** 需要在本地服务器上创建一个用于存放备份文件的目录。 2. **执行...

    c#远程调用linux服务器的Python脚本(csdn)————程序.pdf

    标题中的"C#远程调用Linux服务器的Python脚本"指的是使用C#编程语言从Windows客户端远程执行在Linux服务器上托管的Python脚本。这通常涉及到跨平台通信和远程过程调用(RPC)技术。描述中提到的问题和解决方案集中在...

    ssh批量登录执行命令脚本

    做好ip清单,每行一个ip,ssh批量登录执行命令

    断开连接脚本+批处理+远程桌面连接+用于远程桌面断开连接后保持GUI桌面

    每次退出远程桌面时,先运行此脚本,这样就能保证程序的正常运行。 通过这个脚本可以学到windows批处理、通过修改注册表禁止windows电脑进入锁屏状态。对windows远程桌面进行一些常规设置,保证远程桌面的连接不会...

    解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题

    Python – paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决 1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh ...

    CentOS使用expect批量远程执行脚本和命令

    `expect`是一个强大的自动化交互式程序的工具,它能够模拟用户与命令行的交互,使得我们可以通过脚本批量执行远程命令和脚本。在本文中,我们将深入探讨如何在`CentOS`中利用`expect`进行批量远程操作。 首先,确保...

    zabbix执行远程主机的脚本或指令详解

    选择“Zabbix客户端”意味着脚本将在安装了Zabbix Agent的远程主机上执行,而“Zabbix Server(代理)”和“Zabbix服务器”则分别表示脚本将在代理或服务器端运行。 在脚本的“命令”字段中,我们可以输入系统命令...

    telnet管理远程机器脚本

    "telnet管理远程机器脚本"是一个高效且实用的方法,它允许我们通过编写脚本来自动化执行对远程服务器的管理和操作任务。在这个主题中,我们将深入探讨telnet的原理、脚本编程以及如何利用脚本进行远程管理。 **...

    RobotFramework远程执行自动化测试

    此外,还有可能是由于环境限制,例如,被测的前端系统运行在Windows上,而与其交互的后台系统位于Linux环境中,这时可能需要在执行自动化测试之前在Linux环境下重启应用服务或机器。这些问题可以通过远程执行自动化...

    liunx 批量刷服务器脚本,带NTP与tool

    执行脚本时,它会遍历服务器列表,执行预设的任务,例如更新系统、安装特定软件、调整配置等。 总的来说,这个"批量刷服务器脚本"是一个强大的工具,能够简化多服务器环境的管理和维护工作。无论你是运维工程师还是...

Global site tag (gtag.js) - Google Analytics