我目前正在尝试简化脚本.我不想手动输入每个命令的主机名,而是希望能够使用变量?数组?某种.想知道你是否可以提供帮助.
例:
hostname1=192.168.1.1
hostname2=192.168.1.2
echo "What would you like to do?"
echo "(1)Ping Hosts"
echo "(2)mkdir /tmp/test"
echo "(3)write to test.txt"
read num_variable
if num_variable = 1
then
ping hostname1
ping hostname2
if num_variable = 2
ssh -n hostname1 "mkdir /tmp/test"
ssh -n hostname2 "mkdir /tmp/test"
if num_variable = 3
ssh -n hostname1 "echo 'hello' > /tmp/test/test.txt"
ssh -n hostname2 "echo 'hello' > /tmp/test/test.txt"
Run Code Online (Sandbox Code Playgroud)
"有没有更简单的方法来写这个?"
例:
Hosts=hostname1,hostname2
Run Code Online (Sandbox Code Playgroud)
这里的命令?
我讨厌拥有20,000行,当我所能做的就是在顶部列出主机名,并为每个num变量执行下面针对该特定部分中列出的主机的所有命令.
创建一个数组:
hosts=(hostname1 hostname2 hostname3)
Run Code Online (Sandbox Code Playgroud)
您可以将其拆分为多行:
hosts=(
hostname1
hostname2
hostname3
)
Run Code Online (Sandbox Code Playgroud)
迭代元素:
for host in "${hosts[@]}"
do
echo "$host"
done
Run Code Online (Sandbox Code Playgroud)
访问特定主机:
echo "${hosts[2]}"
Run Code Online (Sandbox Code Playgroud)
使用该select命令创建菜单:
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
echo "Opt: $opt, Reply: $REPLY"
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 2")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |