如何将在连接的计算机上运行的命令的输出发送到连接的计算机中的文件

时间:2019-06-06 11:38:08

标签: bash ssh

我正在制作一个脚本,以通过ssh访问一堆机器并运行df -h命令以检查其磁盘使用率是否接近100%,我的问题是我无法在机器,当我运行命令时,无法将其发送到用于连接的机器中的文件中。 我已经尝试过了

df -h > /dir/file

但这只是在我连接的机器上创建一个文件。 我将如何去做自己想做的事情?

我用来执行此操作的完整代码是

expect <<-EOF
spawn ssh -oPort=23 x.x.x.x df -h > /home/file
expect "*password: " {send "password\r"}
expect "*#" {send "exit\r"}
EOF

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

赞:

UseDataAnnotations obj = new UseDataAnnotations();
obj.Name = null;

var context = new ValidationContext(obj, null, null);
var result = new List<ValidationResult>();

// pass the result here as the argument to fill it up with the erros.
bool IsValid = Validator.TryValidateObject(obj, context, result, true);

Console.WriteLine(IsValid);

foreach(var x in result)
{
    Console.WriteLine(x.ErrorMessage);
}

答案 1 :(得分:1)

将重定向移动到heredoc的开头:

expect <<-EOF > /home/file
spawn ssh -oPort=23 x.x.x.x df -h
expect "*password: " {send "root\r"}
expect "*#" {send "exit\r"}
EOF

(未经测试)