shell案例分发系统

shell案例分发系统
一、expect
expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令。但当不能使用密钥验证的时候,我们就没有办法了。所以,这时候只要知道对方机器的账号和密码就可以通过expect脚本实现登录和远程命令。脚本后缀为.expect
安装expect:yum install -y expect
1、自动远程登录,并执行命令
首先来看一个登录后不退出的脚本:
#!/usr/bin/expect
set host "192.168.0.117"
set passwd "123456"
spawn ssh root@$host
expect {"yes/no" { send "yes\r"; exp_continue }
"assword:" { send "$passwd\r" }
}
interact

再来看一个登录后,执行命令在再退出
#!/usr/bin/expect
set user "root"
set host "192.168.0.117"
set passwd "123456"
spawn ssh $user@$host
expect {
"yes/no" { send "yes\r"; exp_continue }
"assword:" { send "$passwd\r" }
}
expect "]*"
send "touch /tmp/12.txt\r"
expect "]*"
send "echo 1212 > /tmp/12.txt\r"
expect "]*"
send "exit\r"

2、传递参数
#!/usr/bin/expect
#分别定义三个参数user、host、cm,其实passwd也可以改成参数
set user [lindex $argv 0]
set host [lindex $argv 1]
set passwd "123456"
set cm [lindex $argv 2]
spawn ssh $user@$host
expect {
"yes/no" { send "yes\r"; exp_continue }
"assword:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"
执行:./3.expect root 192.168.0.117 "ls /tmp/21.txt"


3、自动同步文件
#!/usr/bin/expect
set passwd "123456"
spawn rsync -av root@192.168.0.117:/tmp/21.txt /tmp/
expect {
"yes/no" { send "yes\r" }
"assword:" { send "$passwd\r" }
}
#指定结束符,否则不会执行前面的命令
expect eof


4、指定host和要同步的文件
#!/usr/bin/expect
set p#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file root@$host:$file
expect {
"yes/no" { send "yes\r" }
"assword:" { send "$passwd\r" }
}
expect eof
执行:./5.expect 192.168.0.117 /tmp/21.txt


二、构建文件分发系统
1、需求背景
对于大公司,当网站或者配置文件更新,而且使用的机器肯定数量很多,少则几台,多则几十甚至上百台,所以,自动同步文件时至关重要的。
2、实现思路
首先要有一台 模板机器,把要分发的文件准备好,然后只要使用expect脚本批量把需要同步的文件分发到目标机器即可。
3、核心命令
rysnc -av --files-from=list.txt / root@host:/
4、文件分发系统的实现
主机ip全部列入ip.txt,需要同步的文件列入 list.text
编写rsync.expect
#!/usr/bin/expect
set p#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av --files-from=$file / root@$host:/
expect {
"yes/no" { send "yes\r" }
"assword:" { send "$passwd\r" }
}
expect eof
编写 rsync.sh

#!/bin/bash
#需要保证rsync.expect在同一目录下,且有执行权限
for ip in `cat ip.list`
do
   echo $ip
    ./rsync.expect $ip list.txt
done
5、命令批量执行脚本
vim exe.expect
#!/usr/bin/expect
set passwd "123456"
set host [lindex $argv 0]
set cm [lindex $argv 1]
spawn ssh root@$host
expect {
"yes/no" { send "yes\r" }
"assword:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
expect "]*"
send "exit\r"
vi exe.sh
#!/bin/bash
for ip in `cat ip.list`
do 
    echo $ip
     ./exe.expect $ip "w;free -m;ls /tmp"
done

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL注入是一种常见的网络安全漏洞,指的是攻击者通过将恶意的SQL代码插入到输入字段或参数中,从而绕过应用程序的安全措施,执行未经授权的数据库操作。 SQL注入攻击可以导致许多不利的后果,包括未经授权的访问、数据泄漏、数据损坏以及远程执行命令等。其中,SQL注入cmdshell案例是指攻击者通过注入恶意的SQL代码来执行操作系统命令。 攻击者通常会在应用程序的输入字段中插入特殊字符或关键字,使应用程序无法正确解析SQL语句,从而导致应用程序将恶意的SQL代码与原始SQL语句拼接在一起执行。一旦攻击成功,攻击者将可以执行任意的操作系统命令,包括创建、修改或删除文件、启动服务或应用程序等。 为了防止SQL注入cmdshell攻击,可以采取以下措施: 1. 输入验证和过滤:对于应用程序的输入字段,应该进行验证和过滤,确保输入的数据符合预期的格式和类型,并且不包含任何特殊字符或关键字。 2. 使用参数化查询和预编译语句:应用程序应该使用参数化查询或预编译语句,将输入参数与SQL语句分离,确保输入的数据不会被误解为SQL代码。 3. 最小权限原则:数据库的访问权限应该设置为最小权限原则,只针对需要的操作和数据进行权限控制,防止攻击者利用注入漏洞执行不受限的操作。 4. 安全审计和日志记录:应该启用安全审计和日志记录,记录所有SQL查询和命令的执行情况,并进行定期的审查和监控,及早发现和应对任何潜在的攻击行为。 总之,SQL注入cmdshell案例是一种很危险的攻击方式,可以通过合理的输入验证、参数化查询、最小权限原则和安全审计等多种措施来防范。同时,开发者和管理员也应该持续关注最新的安全漏洞和攻击技术,及时更新和加强安全防护措施,保护数据库和应用程序的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值