【发布时间】:2019-07-25 12:12:13
【问题描述】:
所以我有一个包含 3 个文本字段的表单,其中两个,用户输入代码(和 OID),我用它来运行命令(snmpbulkwalk)。所以我想将这些命令的输出存储在一个变量中,比如说 var1 和 var2。
[]
但是,在最后一个文本字段中,我想对这些变量进行操作,例如:var1 - var2。
到目前为止我试过这个:
@var1 = "nice -n 19 snmpbulkwalk -v 2c -c %snmp_community
%sensor_ip "+ "#{monitor_category_params[:oid].strip}"+" | awk
'/kB$/{ $(NF-1)= $(NF-1)*1024;} {print $0}' | sed 's/ [A-Za-
z]*$//' | awk '{print $NF}' | grep -o '[[:digit:]]*' | paste -s
-d';' -"
puts("var1 = " + "#{@var1}");
@var2 = "nice -n 19 snmpbulkwalk -v 2c -c %snmp_community
%sensor_ip "+ "#{monitor_category_params[:oid2]}"+" | awk
'/kB$/{ $(NF-1)= $(NF-1)*1024;} {print $0}' | sed 's/ [A-Za-
z]*$//' | awk '{print $NF}' | grep -o '[[:digit:]]*' | paste -s
-d';' -"
puts("var2 = " + "#{@var2}");
@var3 = "#{monitor_category_params[:snmp_oper].strip}"
puts("var3 with {} = " + "#{@var3}");
system = '$(#{@var3})'
puts(system(system));
问题是我不知道如何将 shell 命令“nice -n 19 ...blabla”的输出存储在变量中。我像这样使用 exec 和反引号:
exec "nice -n 19 snmpbulkwalk -v 2c -c %snmp_community %sensor_ip "+ "#{monitor_category_params[:oid].strip}"+" | awk '/kB$/{ $(NF-1)= $(NF-1)*1024;} {print $0}' | sed 's/ [A-Za-z]*$//' | awk '{print $NF}' | grep -o '[[:digit:]]*' | paste -s -d';' -"
但它给了我这个错误,我没有得到它,因为命令格式正确。
sh: -c: línea 0: EOF inesperado mientras se buscaba un `)' coincidente
sh: -c: línea 1: error sintáctico: no se esperaba el final del fichero
我不知道我是否丢失了参数(%snmp_community 或 %sensor_ip),但最终结果应该类似于 system = number - number。但我只得到 system = var1 - var2,它什么都不做,因为我想要命令的输出,而不是变量的名称。
对不起,如果没有很好地解释我自己,提前谢谢你。
【问题讨论】:
标签: ruby-on-rails ruby forms snmp oid