我正在使用以下命令远程使用 ssh 提取磁盘空间。但只想存储输出而不是所有其他消息,如下所示;
有什么帮助吗?或者还有其他解决方案吗?
ssh rajesh-server 'df -h /db* | cat' 2>&1
|-----------------------------------------------------------------|
| This system is for the use of authorized users only. |
| Individuals using this computer system without authority, or in |
| excess of their authority, are subject to having all of their |
| activities on this system monitored and recorded by system |
| personnel. |
| |
| In the course of monitoring individuals improperly using this |
| system, or in the course of system maintenance, the activities |
| of authorized users may also be monitored. |
| |
| Anyone using this system expressly consents to such monitoring |
| and is advised that if such monitoring reveals possible |
| evidence of criminal activity, system personnel may provide the |
| evidence of such monitoring to law enforcement officials. |
|-----------------------------------------------------------------|
Filesystem Size Used Avail Use% Mounted on
/dev/vx/dsk/xcv01_day/db01_day
200G 154G 44G 79% /db01_day
/dev/vx/dsk/xcvg01_day/db01_day
200G 154G 44G 79% /db01_day
/dev/vx/dsk/xcvg01_day/db01_day
200G 154G 44G 79% /db01_day
答案1
“框”中的所有文本都是由您的登录脚本生成的,而不是由命令生成的df
。通常,如果您的主目录中存在名为的文件,则设置了登录消息的服务器将跳过显示这些消息.hushlogin
。因此,首先,尝试创建该文件:
ssh rajesh-server "touch .hushlogin"
接下来,您不需要| cat
在命令行中,或者很可能不需要 stderr 重定向。请尝试以下方法:
ssh rajesh-server 'df -h /db*'
如果您仍收到包含该文件的消息.hushlogin
,则需要解析输出。这将执行此操作:
ssh rajesh-server 'df -h /db*' | sed '/^|/d'
此sed
命令获取 ssh 命令的输出,删除以管道符开头的所有行,并打印其他所有内容。
请注意,您可能需要考虑使用专门为此类任务构建的监控工具。有许多这样的工具,其中一些RRD工具前端。我最喜欢的是仙人掌和穆宁。这些将绘制您的磁盘(或网络或其他)使用情况的图表,以便您可以看到情况随时间如何变化。
答案2
ssh rajesh-server 'df -h /db*' > file 2> /dev/null
将远程输出发送df
到file
同时将服务器的杂物发送到/dev/null
。