gpt4 book ai didi

linux - 将两个变量打印到一个文件中

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:37 25 4
gpt4 key购买 nike

我有一个 IP 列表,我想通过 snmp 获取到一个文件中。我在将输出写入文件时遇到问题。

 OID=1.3.6.1.2.1.25.3.2.1.3.1
cat printers.csv | while read IP ; do
OUT=$(snmpget -v1 -c public $IP $OID)
printf '%s, %s\n' $IP $OUT >> printerNames.csv
done

我是 printf 命令的新手。我猜这就是它搞砸的地方 bc 输出被错误地写入。此外,当没有响应时,它会回显到控制台,我希望将其写入输出文件。任何帮助将不胜感激。

最佳答案

试试这个:

OID=1.3.6.1.2.1.25.3.2.1.3.1
while read IP ; do
OUT=$(snmpget -v1 -c public "$IP" "$OID") && printf '%s, %s\n' "$IP" "$OUT"
done < printers.csv 2>&1 > printerNames.csv

除非您有充分的理由不这样做,否则始终引用参数扩展是个好主意。重定向应用于 while 循环。 read 将从输入文件中一次读取一行(不需要 cat);写入标准错误的任何内容都被复制到标准输出,标准输出(包括错误)被重定向到输出文件。 printf 仅在 snmpget 命令成功时执行(我假设它在查找失败时具有非零退出状态;事实可能并非如此)。


听起来 printers.csv 有 DOS 行结尾 (\r\n)。回车作为每行的最后一个字符包含在内。当您打印 $IP 时,它会打印地址,然后是回车符,它将光标移回行首。这会导致该行的其余部分 (, $OUT) 覆盖该地址。要删除回车符,请通过 dos2unix 运行输入文件,或使用其他方法将 DOS 行结尾转换为 UNIX 行结尾(仅 \n)。

关于linux - 将两个变量打印到一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com