shell脚本来ssh远程机器并打印top命令的输出

 手机用户2502939545 发布于 2023-02-06 12:53

我想写一个shell脚本来做以下四件事:

    ssh远程机器(比如hosti)

    将机器名称打印到文件(top_out)

    将'top'命令输出的前几行打印到与step2相同的文件中

    对另一台机器重复1-3

我试过这个:

#! /bin/bash

for i in 1 2 3 4 5 6 7 8

do
    echo "host$i" >> ~/mysh/top_out
    ssh host$i "top -n1 -b | head -n 15>> ~/mysh/top_out"
    echo "done"
done

我得到的输出文件保存了一些机器的最高输出(比如host5-8),但是对于像host1-4这样的早期机器人来说它是空白的.如果我尝试没有"echo"主机$ i">>〜/ mysh/top_out",我可以得到所有host1-8的最高输出.

1 个回答
  • 当你这样做

    ssh host$i "top -n1 -b | head -n 15>> ~/mysh/top_out"
    

    您将输出写入~/mysh/top_out远程主机,而不是本地计算机.远程主机可能没有使用与本地计算机相同的物理主目录.如果您在某些计算机上拥有NFS或共享主目录但不是全部共享主目录,那么您将看到所描述的症状.

    试着做

    ssh host$i "top -n1 -b | head -n 15" >> ~/mysh/top_out
    

    相反,或者使事情略微清洁,甚至可能

    #!/bin/bash
    
    for i in $(seq 1 8); do
        (echo "host$i"
         ssh host$i "top -n1 -b | head -n 15") >> ~/mysh/top_out
        echo "done host$i"
    done
    

    2023-02-06 12:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有