如何仅使用我需要的值编写 SSH 命令输出

how do I write SSH command output with only values I need

我正在使用为命令行提供的 API 创建一个 VPS。该命令的输出带有几个我不需要的文本。这是我的命令。

变量是预定义的并且工作正常。

echo y | /usr/local/bin/CLICMD vm create --hostname=$VMNAME --domain=$srvdomain --cpu 1 --memory 1024 --image $image --datacenter=$dc --billing=hourly -n 100 > /dev/null 1>> /home/logs/createvps.log

当我 运行 它时,它在 createvps.log 文件中给我以下输出,

This action will incur charges on your account. Continue? [y/N]: id 11232312
created 2015-06-13T14:43:27-05:00
guid xxxxxx-r345-4323-8e3f-c8c04e18fad7

从上面的输出中,我只需要将 id (11232312) 值存储在 mysql table 中。我知道如何从日志文件中获取值并保存在 mysql.

我的问题是,如何在日志文件中只保存该 ID 而不是所有其他 values/strings。

提前致谢。

不确定您的问题到底是什么,但我想这应该对您有所帮助:

echo y | /usr/local/bin/CLICMD vm create --hostname=$VMNAME \
 --domain=$srvdomain --cpu 1 --memory 1024 --image $image \
 --datacenter=$dc --billing=hourly -n 100 | \
 grep -oE "id [0-9]+$" | grep -Eo "[0-9]+" >> /home/logs/createvps.log

关于你的代码和我的代码的区别的几点说明:

  • 你对 stdout 进行了两次重定向,一次重定向到 /dev/null,一次重定向到你的日志,这相当于只进行一次重定向(写入 /dev/null 实际上是 NOP)。