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
分享到:
相关推荐
通过这个工具你可以实现以下功能:把你所有的 C# 脚本集中在单一的位置(服务器),并且可以从服务器位置直接下载到你当前的 Unity 项目(本地)中,同时,它还允许把本地项目中的任何更改推送回原始位置(服务器)...
如果gerrit安装在Linux服务器上,请不要忘记使脚本可执行。 如果脚本的名称从创建的补丁集更改为其他名称,请不要忘记将$GERRIT_HOME/etc/gerrit.config的[Hooks]部分更新为包括patchsetCreatedHook = new_script_...
N1Script开源服务端和客户端源码更新记录:2019.12.16v2.101.添加倒计时功能2019.12.14v2.91.添加服务器设置历史记录2.添加github主页跳转按钮2019.12.13v2.8 (需更新服务端及手机端)1.修改定时为单控模式2019.12.6v...
minecraft_bedrock.sh脚本包含用于保存更改并在启动时推送到该存储库的逻辑,该逻辑旨在在服务器重新引导时运行。 该minecraft_bedrock不包含minecraft_bedrock可执行文件,可以从下载该文件。 命令行示例: # ...
服务器上的集线器类调用此函数将内容更新推送到每个客户端。对htmlEncode函数的可选调用显示了一种在将消息内容显示在页面中之前对其进行HTML编码的方法,以防止脚本注入。 HTML 复制 chat.client....
Postman-util-lib是一个JavaScript库捆绑包,用于压缩Postman脚本,使您可以轻松地从Postman的Pre-request Script和Tests选项卡中使用许多加密方法。... 部署只是将更改推送到git repo,并将部署到github页面中
使用gapps ,您可以在本地开发Apps脚本,然后将文件推送到Apps Script服务器。 这使您可以在Apps Script开发中使用您选择的任何编辑器,版本控制和其他现代Webdev模式。 要求 npm install -g node-google-apps-...
例如,如果您使用的是Github或Bitbucket,则每当您将更改推送到项目的主分支时,都可以使用设置一个挂钩,该挂钩在登台服务器上为您的项目运行重新部署脚本。 如果您使用Mattermost或Slack,则可以设置“传出...
C ++ Web应用程序0.工具您将触摸以下技术。C ++(cgicc)HTML / CSSGoogle云端(Linux vm,vim)码头工人Apache2 ...创建存储库并推送项目。 以后需要。2.创造环境前往cloud.google.com按“选择项目”->按“新项目”->
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 ...
├─第1章 认识WAP │ ├─第2章 WAP原理、架构与开发工具 │ ├─第3章 WAP手机上网设置 │ ├... ├─WAP及其应用发展趋势 │ ├─WAP资源 │ └─WAP中推送技术的分析与设计
安装注意事项valheim_dedicated.sh脚本包含用于保存更改并在启动时推送到此存储库的逻辑,该逻辑旨在在服务器重新引导时运行。 大于50MB的服务器文件不包含在此存储库中。 可以从安装完整的服务器软件。命令行示例:...
并Member added Event 电报机器人 :robot: 用于发送通知警报的API和Gotify API密钥Netlify环境变量,用于存储敏感数据,例如API密钥和其他变量设置 :wrench: 单击上面的按钮将此脚本连接到您的Netlify帐户接下来,它...
为了使 CDN 的内容正常刷新,需要创建新的git tag 并推送至GitHub仓库中,否则此处的 @latest 仍然指向更新前的文件。此外CDN本身存在缓存,因此改动可能需要一定的时间生效。 Self-host 你也可以直接把这些文件放到...
将您的分支推送到GitHub 打开请求请求! 开发环境设置 在script/setup运行安装脚本。 这将初始化Git子模块,下载去混淆的Minecraft源,并为您设置IntelliJ项目文件。 如果要使用Eclipse,则可以在运行安装脚本以...
bot 功能是在服务器上设置一个 cronjob,以从 git-repositoy 中提取更改并将它们推送到 reddit。 ##Usage 随心所欲,添加子模块,fork 直接使用,只拉脚本,... 带有多个子模块的###Script:这是我使用它的方式,...
这里的目的是创建一个足够灵活的管道,能够推送任何类型的代码,并为通过 StackStorm 进行快速部署和管理做好准备。 此工作流订阅了“约定优于配置”的世界观。 任何项目都应该能够被这个管道使用,假设它遵循以下...
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中的...
为了使 CDN 的内容正常刷新,需要创建新的git tag 并推送至GitHub仓库中,否则此处的 @latest 仍然指向更新前的文件。此外CDN本身存在缓存,因此改动可能需要一定的时间生效。Self-host 你也可以直接把这些文件放到...
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中的...