目的是通過呼叫shell腳本用expect從a節點自動登陸到b節點,然后驗證b節點上的某個目錄的ok檔案是否到達,如果沒有就進行睡眠一段時間后再次驗證直到掃描5次沒有檔案,或者掃描到檔案后exit 0,想通過每天的調度來跑shell腳本進行檢查。
現在寫了一段實在不知道怎么獲取find這個命令結果然后在后面進行shell腳本的if then ,平時用shell不是很熟練,希望大家幫忙看看,
#!/bin/bash
file_pwd='/bigdata/data/20190902'
usr/bin/expect <<-EOF
set timeout 5
spawn ssh $1@$2
expect {
"(yes/no)?" {send "yes\n"}
"password:"{send"hadoop\n"}
eof}
send "find ${file_pwd}|awk -F '.' '{print $2}' "
expect eof
interact
EOF
uj5u.com熱心網友回復:
不知道expect怎么把變數傳遞給shell的,所以我只會在expect中輸出一個值或者字串,然后回到shell去取這個值,來判斷,這種方式
#!/bin/bash
function() {
file_pwd='/bigdata/data/20190902'
usr/bin/expect << EOF
set timeout 5
spawn ssh $1@$2
expect {
"(yes/no)?" {send "yes\n"}
"password:"{send"hadoop\n"}
expect "root@"
send "ls test.txt > /dev/null && echo 0 || echo 1"
send "exit\r"
EOF
}
status=`function | *****`
類似這樣,function這個函式會有一些輸出,通過處理,把echo的字串,過濾出來,賦值給一個變數status,然后再去判斷,再在后面加一些操作
uj5u.com熱心網友回復:
麻煩問下最后一步function怎么獲取結果啊,百度了半天沒找到用法啊
,而且好像試了一下send "ls test.txt > /dev/null && echo 0 || echo 1"這一句一定是輸出0的,這樣就沒有檢測檔案的作用了啊
uj5u.com熱心網友回復:
取結果就是status=`function | *****`
執行這個函式,然后管道進行處理
ls test.txt > /dev/null && echo 0 || echo 1 應該不會都是輸出0,有test.txt這個檔案 則echo 0 ,否則輸出1,這句你隨便找個機器就可以測驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/99090.html
標籤:UNIX文化
