エンタープライズホストの完全なリストを含む入力リストがあります(/home/completehostlistcheck.txt
)。現在存在する環境(比較合計へdev=/home/dev.txt
の入力)に基づいてprod=/home/prod.txt
実行され、echo
現在存在する環境を指します。問題は、大文字と小文字の構文が機能しないことです。
#!/bin/bash
dev=/home/dev.txt
prod=/home/prod.txt
for host in $(</home/completehostlistcheck.txt)
do
ssh $host
chk=$hostname
case "$chk" in
dev) echo "this is dev"
;;
prod) echo "this is prod"
;;
esac
done
ベストアンサー1
開発ホストと本番ホストの違いを知っている場合、または単純な命名規則(例:dev.example.com
vs prod.example.com
.)がある場合は、次のように簡単にできます。
for host in $(</home/completelistlistcheck.txt); do
case "$(ssh $host hostname)" in
*dev*)
env="development"
break
;;
*prod*)
env="production"
break
;;
*)
env="non-categorized"
break
;;
esac
echo "$host is a $env host."
done
内容を解析する必要がある各ホストにファイルがある場合は、runコマンドにそのファイルを渡すのではなくcat /path/to/file
使用してください。hostname
ssh