我正在尝试使用 FOR 循环遍历 IP 地址(在 bash 数组中)、登录、运行脚本然后退出。该数组称为 ${INSTANCE_IPS[@]}。但是,以下代码不起作用,因为expect似乎无法接受变量 $instance。
for instance in ${INSTANCE_IPS[@]}
do
echo $instance
/usr/bin/expect -c '
spawn ssh root@$instance;
expect "?assword: ";
send "<password>\r";
expect "# ";
send ". /usr/local/bin/bootstrap.sh\r";
expect "# ";
send "exit\r" '
done
Run Code Online (Sandbox Code Playgroud)
但是,expect抱怨:
can't read "instance": no such variable
while executing
"spawn ssh root@$instance"
Run Code Online (Sandbox Code Playgroud)
位于此处的stackoverflow 上还有另一个问题,它使用环境变量来实现这一点,但是它不允许我像在数组中那样遍历不同的 IP 地址。
任何帮助表示赞赏。
干杯
我正在尝试组合 FOR 循环(迭代 IP 地址)和 IF 循环(在继续之前使用 nc 检查 ssh 连接是否成功)。
我有一个数组 ${INSTANCE_IPS[@]} ,其中包含 IP 地址(目前它包含 2 个 IP 地址)。这是代码:
while [ $ITERATION -le 30 ]
do
for instance in ${INSTANCE_IPS[@]}
do
nc -w 2 $instance 22 > /dev/null
if [ $? -eq 0 ]
then echo "connection succeeded to $instance"
else
ITERATION=$((ITERATION+1))
echo ITERATION=$ITERATION
echo "[info] connection to $instance unsuccessful. trying again. iteration=$ITERATION"
sleep 20
fi
done
done
Run Code Online (Sandbox Code Playgroud)
IF 循环中的“else”语句工作正常。这是我遇到问题的“then”语句...我不知道连接成功后如何打破 IF 循环。这是我运行上述命令时的输出示例:
connection succeeded to 10.11.143.171
connection succeeded to …Run Code Online (Sandbox Code Playgroud) 我试图根据设置的内容设置$Environment变量$EnvironmentGroup.我认为结合until并且if可以工作,但我最终得到一个空变量.任何帮助表示赞赏:)
until [ -n $Environment ]
do
if [ $EnvironmentGroup -eq ^dev* ]
then Environment=dev
break
fi
if [ $EnvironmentGroup -eq ^sit* ]
then Environment=sit
break
fi
if [ $EnvironmentGroup -eq ^uat* ]
then Environment=uat
break
fi
if [ $EnvironmentGroup -eq ^prod* ]
then Environment=prod
break
fi
done
Run Code Online (Sandbox Code Playgroud) 警告:python非常新
我正在尝试连接存储在数组$ {INSTANCE_IPS [@]}中的一系列IP地址.我试图使用for循环使用python脚本调用API到数组中的每个IP地址.
但是,当尝试运行以下脚本时,我收到错误:
Traceback (most recent call last):
File "<stdin>", line 12, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Traceback (most recent call last):
File "<stdin>", line 12, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Run Code Online (Sandbox Code Playgroud)
我确信我可以在python中进行for循环,但我还没有学到这一点,而且目前只需要让它工作.如果我只使用阵列中的一个IP地址,它运行正常.
for instance in ${INSTANCE_IPS[@]}
do
echo "Connecting to $instance"
/usr/bin/python << END_OF_PYTHON
import requests
import json
import sys
import socket
import fnmatch
import os
ipaddress = os.getenv('instance')
print ipaddress
port = ':80'
updatedipaddress = …Run Code Online (Sandbox Code Playgroud) 只是寻找关于free -mLinux输出的一些快速帮助.这是我的一台服务器上的示例:
$free -m
total used free shared buffers cached
Mem: 14881 14813 68 0 262 883
-/+ buffers/cache: 13667 1213
Swap: 4095 240 3855
Run Code Online (Sandbox Code Playgroud)
我知道内核可以并将使用可用内存进行磁盘缓存来加速系统.
通常情况下,我会查看"免费"列中的第二个值,在上面的例子中它是1213.它通常比这要高很多.
我想我想了解' - /+ buffers/cache'旁边的两个输出是什么意思.从我所看到的,系统内存确实很低(只有1213MB可供应用程序使用),操作系统实际需要 13GB用于缓存?