在我的一个bash脚本中,我想阅读并使用远程机器上其他脚本的变量值。 我应该如何解决这个问题。任何相关信息都会有所帮助。 提前谢谢!
答案 0 :(得分:3)
这是怎么回事(这是我目前无法自己测试的代码):
text=$(ssh yourname@yourmachine 'grep uploadRate= /root/yourscript')
它假定变量的值包含在一行中。变量文本现在包含变量赋值,可能类似于
uploadRate=1MB/s
有几种方法可以将文本/代码转换为当前脚本中的实际变量赋值,例如评估字符串或使用grep。我会推荐
uploadRate=${text#*=}
只需删除部分并包含=
。
编辑:还有一点值得一提的是,这只适用于原始作业本身不包含变量引用的情况,如
uploadRate=1000*${kB}/s
答案 1 :(得分:0)
我至少会说两种方式:
1)您只需使用scp
命令将输出重定向到远程服务器到系统的文件......它可以为您工作。然后您的机器上的脚本应该将该文件作为参数读取。
脚本:
read -t 50 -p "Waiting for argumet: " $1
等待远程机器的输出, 那你可以
sshpass -p<password> scp user@host:/Path/to/file /path/to/script/
您需要做什么:
您应该从您的机器告诉脚本,scp
命令的输出是参数($1
)
2)从您的机器运行脚本:
#!/bin/bash
script='
#Your commands
'
sshpass -p<password> ssh user@host $script
你还有另一种方法可以运行脚本来处理远程机器。
答案 2 :(得分:0)
ssh user@machine 'command'
将打印远程命令的标准输出。