我正在尝试编写一个脚本,从 3 台 Linux 机器读取日志并将日志(带有某种前缀)写入一个文件中。
我的问题是我可以访问该文件以查看它,但是当我尝试写入时它不起作用。
工作代码
expect -c "
spawn ssh [email protected] \" tail -f my_file\"
expect {
\"*assword\" {send \"PASS\r\";}
}
expect eof
"
如果我添加
tail -f >> my_file.log
不起作用。
首先,我强烈建议您学习如何使用带有密钥的 SSH,这样您就不需要密码了。
然后,您需要做的就是:
ssh username@server 'tail -f filename' >> my_file.log
你的命令
tail -f filename >> my_file.log
正在遥控器上运行。所以 my_file.log 在远程。要将输出获取到本地文件,请将
>> my_file.log
移动到期望脚本的末尾:
expect -c "..." >> my_file.log
这是我的解决方案(包括自动登录),以防您想在 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 杀死尾部捕获。