`
webcenterol
  • 浏览: 914130 次
文章分类
社区版块
存档分类
最新评论

将脚本或文件推送到其他服务器上并执行的Script

 
阅读更多

sshcmd脚本如下:

#!/usr/local/bin/expect


set COMD [lindex $argv 0]
set LIST [lindex $argv 1]

set timeout 60
set ADMI_PASS "PASSWD1" #远程服务器的sysadmin密码
set ROOT_PASS "PASSWD2" #远程服务器根用户密码

proc action {HOST} {
puts stdout "#############################################################################################"
puts stdout $HOST
puts stdout "#############################################################################################"

global COMD
global ADMI_PASS
global ROOT_PASS

set PASS $ADMI_PASS

#################################################################################
# -gf 拽回执行结果 sshcmd -gf mx1.dns.com.cn out.txt
if {[string equal $COMD "-gf"]==1} {
global argv
set REMOTE_FILE [lindex $argv 2]
set LOCAL_FILE [lindex $argv 3]

spawn -noecho scp sysadmin@$HOST:$REMOTE_FILE $LOCAL_FILE.$HOST
expect {
"yes/no" {
send "yes\r";
exp_continue
}
"Password:" {
if {[string equal $PASS $ROOT_PASS]==0} {
send "$PASS\r";
exp_continue
}
}
}

#################################################################################
} else {
if {[string equal $COMD "-pfc"]==1} {
global argv
set LOCAL_FILE [lindex $argv 2]
set REMOTE_FILE [lindex $argv 3]

# -pfc 推送并执行 sshcmd -pfc mx1.dns.com.cn /tmp/hello.sh
spawn -noecho scp $LOCAL_FILE sysadmin@$HOST:$REMOTE_FILE
expect {
"yes/no" {
send "yes\r";
exp_continue
}
"Password:" {
if {[string equal $PASS $ROOT_PASS]==0} {
send "$PASS\r";
exp_continue
}
}
}

set PROC "chmod +x $REMOTE_FILE ; $REMOTE_FILE &"

} else {
puts stdout "-gf 拽回结果 sshcmd -gf mx1.dns.com.cn /tmp/KevinShell/KevinShell.txt out.txt"
puts stdout "-pfc 推送并执行 sshcmd -pfc mx1.dns.com.cn /tmp/hello.sh /tmp/KevinShell/hello.sh"
exit
}

spawn -noecho ssh sysadmin@$HOST
expect {
"yes/no" {
send "yes\r";
exp_continue
}
"Password:" {
# login as sysadmin
if {[string equal $PASS $ROOT_PASS]==0} {
send "$PASS\r";
send "su\r";
set PASS $ROOT_PASS

exp_continue
} else {
# login as root
send "$PASS\r";
send "bash\r";

if {[string length $PROC]!=0} {
send "$PROC\r"
send "exit\r"
send "exit\r"
send "exit\r"

exp_continue
} else {
interact
}
}
}
}
}
return
}


if {[file exists $LIST]==1} {
set FP [open $LIST r]
while { [gets $FP HOST] && [string length $HOST]!=0 } {
action $HOST
}
close $FP
} else {
action $LIST
}


实际应用:

将脚本MailAddress.sh推送到其他服务器上/tmp目录下,但不执行。
需要注释掉sshcmd脚本的这一行 “set PROC "chmod +x $REMOTE_FILE ; $REMOTE_FILE &"”

#!/bin/sh
cd /home/sysadmin/zhaoyj/
for i in 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 51 52 53 54 55 56 57 58
#5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 51 52 53 54 55 56 57 58
do
./sshcmd -pfc mx$i.dns.com.cn MailAddress.sh /tmp/
done


./sshcmd -pfc m-g3.dns.com.cn MailAddress.sh /tmp/
./sshcmd -pfc fmx1.dns.com.cn MailAddress.sh /tmp/


------------------------------------------------------
将脚本qiantao.sh推送到其他服务器重命名为Execute.sh(自定义)上,并执行,注意前后变化。


#!/bin/sh
cd /home/sysadmin/zhaoyj/
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 51 52 53 54 55 56 57 58
do
./test.sh -pfc mx$i.dns.com.cn qiantao.sh /tmp/Execute.sh #名字是自定义的
done


./test.sh -pfc m-g3.dns.com.cn qiantao.sh /tmp/Execute.sh
./test.sh -pfc fmx1.dns.com.cn qiantao.sh /tmp/Execute.sh



-------------------------------------------
[root@ctrl /home/sysadmin/zhaoyj]# cat qiantao.sh

#!/bin/sh
cat /tmp/MailAddress.sh >> /root/crontab/statitstic/statistic.sh






















分享到:
评论

相关推荐

    强大的Unity3d ScriptManager脚本管理器插件

    通过这个工具你可以实现以下功能:把你所有的 C# 脚本集中在单一的位置(服务器),并且可以从服务器位置直接下载到你当前的 Unity 项目(本地)中,同时,它还允许把本地项目中的任何更改推送回原始位置(服务器)...

    redmine-gerrit-scripts:一些将Gerrit与Redmine连接的脚本

    如果gerrit安装在Linux服务器上,请不要忘记使脚本可执行。 如果脚本的名称从创建的补丁集更改为其他名称,请不要忘记将$GERRIT_HOME/etc/gerrit.config的[Hooks]部分更新为包括patchsetCreatedHook = new_script_...

    N1Script:N1脚本

    N1Script开源服务端和客户端源码更新记录:2019.12.16v2.101.添加倒计时功能2019.12.14v2.91.添加服务器设置历史记录2.添加github主页跳转按钮2019.12.13v2.8 (需更新服务端及手机端)1.修改定时为单控模式2019.12.6v...

    minecraft:我的世界基岩服务器

    minecraft_bedrock.sh脚本包含用于保存更改并在启动时推送到该存储库的逻辑,该逻辑旨在在服务器重新引导时运行。 该minecraft_bedrock不包含minecraft_bedrock可执行文件,可以从下载该文件。 命令行示例: # ...

    SignalR 2.0 and MVC 5即时通讯完整版示例

    服务器上的集线器类调用此函数将内容更新推送到每个客户端。对htmlEncode函数的可选调用显示了一种在将消息内容显示在页面中之前对其进行HTML编码的方法,以防止脚本注入。 HTML 复制 chat.client....

    postman-util-lib:可以从Postman Pre-request和Tests脚本选项卡中使用的加密实用程序库

    Postman-util-lib是一个JavaScript库捆绑包,用于压缩Postman脚本,使您可以轻松地从Postman的Pre-request Script和Tests选项卡中使用许多加密方法。... 部署只是将更改推送到git repo,并将部署到github页面中

    node-google-appscript

    使用gapps ,您可以在本地开发Apps脚本,然后将文件推送到Apps Script服务器。 这使您可以在Apps Script开发中使用您选择的任何编辑器,版本控制和其他现代Webdev模式。 要求 npm install -g node-google-apps-...

    webhook:webhook是运行shell命令的轻量级传入webhook服务器

    例如,如果您使用的是Github或Bitbucket,则每当您将更改推送到项目的主分支时,都可以使用设置一个挂钩,该挂钩在登台服务器上为您的项目运行重新部署脚本。 如果您使用Mattermost或Slack,则可以设置“传出...

    新服务器

    C ++ Web应用程序0.工具您将触摸以下技术。C ++(cgicc)HTML / CSSGoogle云端(Linux vm,vim)码头工人Apache2 ...创建存储库并推送项目。 以后需要。2.创造环境前往cloud.google.com按“选择项目”->按“新项目”->

    RED HAT LINUX 6大全

    11.5.3 DNS将名字映射到IP地址及反 序操作 207 11.5.4 前区和反区必须保持同步 207 11.5.5 HUP信号和重启 207 11.5.6 IN-ADDR.ARPA域 207 11.5.7 主机命名方案 208 11.5.8 配置DNS客户:/etc/resolv.conf 208 ...

    wap文档

    ├─第1章 认识WAP │ ├─第2章 WAP原理、架构与开发工具 │ ├─第3章 WAP手机上网设置 │ ├... ├─WAP及其应用发展趋势 │ ├─WAP资源 │ └─WAP中推送技术的分析与设计

    ValheimServer

    安装注意事项valheim_dedicated.sh脚本包含用于保存更改并在启动时推送到此存储库的逻辑,该逻辑旨在在服务器重新引导时运行。 大于50MB的服务器文件不包含在此存储库中。 可以从安装完整的服务器软件。命令行示例:...

    new-members:一个从您的Ghost网站获取新会员注册通知的简单脚本

    并Member added Event 电报机器人 :robot: 用于发送通知警报的API和Gotify API密钥Netlify环境变量,用于存储敏感数据,例如API密钥和其他变量设置 :wrench: 单击上面的按钮将此脚本连接到您的Netlify帐户接下来,它...

    live2d-widget网页看板娘-其他

    为了使 CDN 的内容正常刷新,需要创建新的git tag 并推送至GitHub仓库中,否则此处的 @latest 仍然指向更新前的文件。此外CDN本身存在缓存,因此改动可能需要一定的时间生效。 Self-host 你也可以直接把这些文件放到...

    LifeAquatic:玩水下冒险吧!

    将您的分支推送到GitHub 打开请求请求! 开发环境设置 在script/setup运行安装脚本。 这将初始化Git子模块,下载去混淆的Minecraft源,并为您设置IntelliJ项目文件。 如果要使用Eclipse,则可以在运行安装脚本以...

    rwikibot:一个管理 subreddit wiki 和设置的机器人

    bot 功能是在服务器上设置一个 cronjob,以从 git-repositoy 中提取更改并将它们推送到 reddit。 ##Usage 随心所欲,添加子模块,fork 直接使用,只拉脚本,... 带有多个子模块的###Script:这是我使用它的方式,...

    cicd-canary:使用 StackStorm 的持续集成持续交付解决方案

    这里的目的是创建一个足够灵活的管道,能够推送任何类型的代码,并为通过 StackStorm 进行快速部署和管理做好准备。 此工作流订阅了“约定优于配置”的世界观。 任何项目都应该能够被这个管道使用,假设它遵循以下...

    JavaScript权威指南(第6版)(中文版)

    18.3 基于服务器端推送事件的comet技术 508 第19章 jquery类库 514 19.1 jquery基础 515 19.2 jquery的getter和setter 522 19.3 修改文档结构 528 19.4 使用jquery处理事件 531 19.5 动画效果 542 19.6 jquery中的...

    live2d-widget网页看板娘 v0.8.2

    为了使 CDN 的内容正常刷新,需要创建新的git tag 并推送至GitHub仓库中,否则此处的 @latest 仍然指向更新前的文件。此外CDN本身存在缓存,因此改动可能需要一定的时间生效。Self-host 你也可以直接把这些文件放到...

    JavaScript权威指南(第6版) 中文版

    18.3 基于服务器端推送事件的comet技术 508 第19章 jquery类库 514 19.1 jquery基础 515 19.2 jquery的getter和setter 522 19.3 修改文档结构 528 19.4 使用jquery处理事件 531 19.5 动画效果 542 19.6 jquery中的...

Global site tag (gtag.js) - Google Analytics