bash - 将远程主机的 < /dev/null 结果保存到文本文件中的本地计算机
问题描述
我有以下代码,它从远程主机检索数据并显示在本地机器显示器上。
if [ $(nc -z 192.168.80.180 22; echo $?) -eq 0 ]; then
ssh root@$192.168.80.180 'df -h; free -m' < /dev/null
echo /dev/null | cat - $var.txt
fi
如何捕获结果并保存到文件中,我尝试了 echo 但它没有用。
谢谢你
解决方案
< /dev/null
将过程标准输出与/dev/null
文件绑定。
保存 < /dev/null 结果...
/dev/null
是一个文件,不会产生结果。
ssh root@$192.168.80.180 'df -h; free -m' < /dev/null
使用指定参数运行ssh
命令并将其标准输入与/dev/null
.
/dev/null
是一个魔术文件。它的大小总是为零。你可以给它写任何东西。它的大小仍然为零。你不能从中读出任何东西。因为它的大小始终为零。表达式< /dev/zero
用于“关闭”命令标准输入。
为了保存它在标准输出上产生的进程输出,您可以使用命令替换:
var=$(ssh root@$192.168.80.180 'df -h; free -m' < /dev/null)
或者您可以通过将其与文件绑定来保存进程的标准输出:
ssh root@$192.168.80.180 'df -h; free -m' < /dev/null > result.txt
您可以阅读有关 bash重定向的更多信息。
线
if [ $(nc -z 192.168.80.180 22; echo $?) -eq 0 ]; then
很奇怪。只是:
if nc -z 192.168.80.180 22; then
如果命令返回零状态,if
则表达式为真。将命令返回状态与零进行比较[ $(command; echo $?) -eq 0 ]
很奇怪。
更多关于if。
也总是引用任何扩展(除非你知道你不需要)。所以引用命令替换[ "$(nc -z ...; echo $?)" -eq 0 ]
。
推荐阅读
- google-coral - 谷歌珊瑚加速器模块+微控制器
- cloud - 在数字海洋上仅使用一个液滴/实例进行自动缩放
- java - 一个键没有插入到哈希图中
- python - 如何在数据框中获取大于当前值的上一个日期
- clang - 如何为 LLVM IR 指令分配名称?
- node.js - 电子和快递
- .net - 如何在已部署的应用服务中获取 kubeconfig
- javascript - 如何在使用 jest 和酶的测试用例中从 react-hook-form 测试 useController 钩子
- python - 为什么wikipedia api在beautifulsoup4或其他东西上给我错误
- optimization - 如何解决 simulink 中的这个错误{矩阵尺寸必须一致。}?