linux 脚本 expected,Linux | shell与expect结合使用

在linux操作系统下,使用脚本自动化,一般由两种方案。

方案一:telnet+ftp

方案二:ssh+scp+expect。

以下主要使用ssh+scp+expect为例进行说明使用方式。

第一步:安装expect:yum -y install expect

第二步:验证,执行expect是否正确

第三步:编写脚本ssh_exec(){

ip=$1

user=$2

passwd=$3

cmdstr=$4

/usr/bin/expect <

set time 10

spawn ssh $user@$1

expect {

"*yes/no" { send "yes\r"; exp_continue}

"*password:" {send "$passwd\r"}

}

expect "*#"

expect "*#"

send "$cmdstr\r"

expect "*#"

send "exit\r"

expect eof

EOF

}

function scp_get () {

local ip=$1

local user=$2

local passwd=$3

local src=$4

local dst=$5

[ -z "$ip" -o -z "$passwd" ] && return 1

/usr/bin/expect << EOF

proc remote_exec {ip passwd src dst} {

spawn scp \$user@\$ip:\$src \$dst

exp_internal 0

expect {

"yes/no" { send "yes\\r";exp_continue}

"*password:" {send "\$passwd\\r"}

}

expect eof

}

remote_exec "$ip" "$user" "$passwd" "$src" "$dst"

EOF

}

#从本地服务器复制到远程服务器

function scp_put () {

local ip=$1

local user=$2

local passwd=$3

local localfile=$4

local dst=$5

[ -z "$ip" -o -z "$passwd" ] && return 1

/usr/bin/expect << EOF

proc remote_exec {ip passwd localfile dst} {

spawn scp \$localfile \$user@\$ip:\$dst

exp_internal 0

expect {

"yes/no" { send "yes\\r";exp_continue}

"*password:" {send "\$passwd\\r"}

}

expect eof

}

remote_exec "$ip" "$user" "$passwd" "$localfile" "$dst"

EOF

}

ssh_exec 192.168.1.2 root 111111 'df -h'

scp_get 192.168.1.2 root 111111 '/root/test.txt' '/opt/'

代码说明:

第四步:对脚本授权,执行:chmod -R 755 script.sh

第五步:脚本执行,./script.sh  (备注:shell+expect脚本,不能使用sh script.sh执行,只能采用./script.sh执行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统文件完整性检测是什么?如何使用shell脚本实现该功能? Shell脚本是一种编程语言,可以在Linux系统中使用。通过编写Shell脚本,可以实现各种自动化任务,包括文件操作、系统管理等。其中,文件完整性检测是一种常见的任务,可以通过Shell脚本来实现。 文件完整性检测是指检查文件是否被篡改或替换。在Linux系统中,可以使用MD5或SHA1等算法来计算文件的哈希值,通过比较哈希值来判断文件是否被修改。具体实现可以使用Shell脚本编写一个函数,该函数接受一个文件路径作为参数,计算文件的哈希值,并与预先计算好的哈希值进行比较,如果不一致则说明文件被修改。 下面是一个示例Shell脚本,用于检测指定目录下所有文件的完整性: ``` #!/bin/bash # 计算文件的哈希值 function calc_hash() { local file="$1" local hash=$(md5sum "$file" | awk '{print $1}') echo "$hash" } # 检测文件完整性 function check_integrity() { local dir="$1" local log_file="$2" local result=0 for file in $(find "$dir" -type f); do local hash=$(calc_hash "$file") local expected_hash=$(grep "$file" "$log_file" | awk '{print $2}') if [ "$hash" != "$expected_hash" ]; then echo "File $file has been modified!" >&2 result=1 fi done return $result } # 记录文件哈希值 function record_hash() { local dir="$1" local log_file="$2" for file in $(find "$dir" -type f); do local hash=$(calc_hash "$file") echo "$file $hash" >> "$log_file" done } # 主函数 function main() { local dir="$1" local log_file="$2" if [ ! -f "$log_file" ]; then record_hash "$dir" "$log_file" else check_integrity "$dir" "$log_file" record_hash "$dir" "$log_file" fi } # 调用主函数 main "/path/to/directory" "/path/to/log/file" ``` 该脚本首先定义了三个函数,分别用于计算文件的哈希值、检测文件完整性和记录文件哈希值。然后在主函数中,首先检查是否存在记录文件,如果不存在则记录所有文件的哈希值,否则检测文件完整性并更新记录文件。最后调用主函数即可实现文件完整性检测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值