我使用SSH在for循环中的多个远程机器上运行一些命令.它为IP地址列表执行相同的命令.某些IP地址可能无法访问,因此我使用了该ConnectTimeout选项.
但是,我的脚本没有按照我想要的方式工作.实际上它停留在第一个无法访问的IP而不是放弃并尝试列表中的下一个IP地址.
这是我的脚本的相关部分:
for ip in ${IP} ; do
ssh -o BatchMode=yes \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=10 \
-l ${USERNAME} \
${SCRIPT_HOST} \
"${COMMAND} -i $ip || echo timeout" \
>> ./myscript.out
done
Run Code Online (Sandbox Code Playgroud)
它对于可访问的IP工作正常,但是如果特定的IP已关闭,它会等待一段时间(远超过10秒,可能是35-40秒)并向我的终端显示错误消息:
ERROR connecting : Connection timed out
所以我想知道我没有正确使用哪个选项.
我有一个完整的远程主机IP地址列表.我写了一个脚本来连接这个列表中的所有主机,一个接一个.我的问题是,有时当IP地址关闭时,脚本会等待一段时间(可能是几分钟)去执行下一个主机.所以我想减少这个等待时间.例如,在10秒后,我希望ssh连接超时,我的脚本尝试下一个IP地址.那我该如何调整呢?
谢谢
我尝试将两个数字(实际上这些是某些远程执行命令的输出)分配给两个不同的变量,比如说 A 和 B。
当我回显 A 和 B 时,它们显示值:
echo $A
809189640755
echo $B
1662145726
sum=`expr $A + expr $B`
expr: non-integer argument
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用 typeset -i 但没有成功。据我所知,bash 并不将我的变量视为整数。将变量转换为整数以便我可以对它们进行加、减、乘等操作的最简单方法是什么?
谢谢。
我尝试做什么,我作为普通用户连接到远程服务器,sudo权限,然后sudo到root,并执行命令并在我的本地终端看到输出.我写了一个这样的小脚本:
#!/bin/bash
my_argument=$1
ssh -t username@hostname 'sudo su -; /path_to_my_script $1'
Run Code Online (Sandbox Code Playgroud)
我键入两次密码(一个用于ssh,另一个用于sudo),但我在本地终端中看不到任何内容,脚本看起来在远程主机中终止.我相信第二个问题可以通过使用exit解决,但我有点困惑,我怎么能把这个输出到我的本地终端.
谢谢
我尝试按照http://boto3.readthedocs.io/网页记录测试boto3库.我尝试获取Cloudformation堆栈列表.所以我的代码是:
import boto3
client = boto3.client('cloudformation')
response = client.list_stacks(
NextToken='string',
StackStatusFilter=[
'CREATE_IN_PROGRESS'|'CREATE_FAILED'|'CREATE_COMPLETE'|'ROLLBACK_IN_PROGRESS'|'ROLLBACK_FAILED'|'ROLLBACK_COMPLETE'|'DELETE_IN_PROGRESS'|'DELETE_FAILED'|'DELETE_COMPLETE'|'UPDATE_IN_PROGRESS'|'UPDATE_COMPLETE_CLEANUP_IN_PROGRESS'|'UPDATE_COMPLETE'|'UPDATE_ROLLBACK_IN_PROGRESS'|'UPDATE_ROLLBACK_FAILED'|'UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS'|'UPDATE_ROLLBACK_COMPLETE'|'REVIEW_IN_PROGRESS',
]
)
print response
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到一条错误消息,如:
TypeError: unsupported operand type(s) for |: 'str' and 'str'
Run Code Online (Sandbox Code Playgroud)
那有什么不对吗?我正在使用Python 2.7
python amazon-web-services python-2.7 aws-cloudformation boto3
我尝试使用ssh运行远程awk语句.我的代码是:
ssh username@hostIP "awk 'NR==1 {max=0;min=1} NR>1 {if (max<\$3) max=\$3}END {print max}' FS=\",\" /path_to_my_file"
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时,我没有收到任何错误消息,但命令不起作用,并且不生成输出但只是挂起所以我需要通过ctrl + c取消它.
有什么我想念的吗?
刚接触Python.并尝试学习如何并排打印元组列表.假设我有一个元组列表,格式为:
myList =[('05', 5), ('08', 3), ('12', 5)]
我想有一个输出像:
05 5
08 3
12 5
Run Code Online (Sandbox Code Playgroud)
没有单引号.最好的方法是什么?
根据 AWS 文档,我可以创建一个新的 lambda 函数别名,例如:
aws lambda create-alias \
--region us-west-2 \
--function-name helloworld \
--description "sample alias" \
--function-version "\$LATEST" \
--name DEV \
--profile adminuser
据我了解,此命令基本上将代码部署到最新的 lambda 别名。所以我相信一旦我部署它,它就会变得活跃。但我会在让它上线之前对其进行测试。我的问题是,将它置于中间阶段以便它可以等到我的 Jenkins 测试完成然后激活它的最简单方法是什么?我应该创建另一个像 $PRE_LATEST 这样的函数版本吗?