如何使用ssh tail命令写入本地文件

问题描述 投票:0回答:3

我正在尝试编写一个脚本,从 3 台 Linux 机器读取日志并将日志(带有某种前缀)写入一个文件中。

我的问题是我可以访问该文件以查看它,但是当我尝试写入时它不起作用。

工作代码

expect -c "
spawn ssh [email protected] \" tail -f my_file\"
expect { 
   \"*assword\" {send \"PASS\r\";}
}
expect eof 
"

如果我添加

tail -f >> my_file.log

不起作用。

linux bash shell ssh
3个回答
1
投票

首先,我强烈建议您学习如何使用带有密钥的 SSH,这样您就不需要密码了。

然后,您需要做的就是:

ssh username@server 'tail -f filename' >> my_file.log

1
投票

你的命令

tail -f filename >> my_file.log

正在遥控器上运行。所以 my_file.log 在远程。要将输出获取到本地文件,请将

>> my_file.log
移动到期望脚本的末尾:

 expect -c "..." >> my_file.log

0
投票

这是我的解决方案(包括自动登录),以防您想在 Bash 脚本中使用:

#!/bin/bash
FILEPATH=/root/logs/
FILENAME='myfile.log'
SSHPASS=YOUR_PASSWORD sshpass -e ssh -oBatchMode=no USER@IPHOST "tail -f $FILEPATH$FILENAME" > $FILENAME

按 CRTL+C 杀死尾部捕获。

© www.soinside.com 2019 - 2024. All rights reserved.