我有一个进程(我已将其放入.bash_profile中的别名中)从远程ssh服务器获取日志文件,将其保存到本地计算机,然后清空远程文件。
目前,我的流程有以下两个命令:
scp admin@remote.co.za:public/proj/current/log/exceptions.log "exceptions $(date +"%d %b %Y").log"
将文件下载到我的本地计算机,然后
ssh admin@remote.co.za "> /public/proj/current/log/exceptions.log"
清除远程文件。这样做意味着我通过ssh 两次登录。我希望这个有效,所以我想要一种方法只登录一次,做两个操作,然后注销。
因此,如果我能找到一种方法从服务器的命令行将文件发送到本地计算机,我可以这样做:
ssh admin@remote.co.za "[GET FILE]; > /public/proj/current/log/exceptions.log"
有办法做到这一点吗?如果没有,还有其他方法可以在登录时实现我的目标吗?
答案 0 :(得分:3)
ssh admin@remote.co.za "cat /public/proj/current/log/exceptions.log &&
> /public/proj/current/log/exceptions.log" > "exceptions $(date +"%d %b %Y").log"
这可以将整个文件写入stdout,它将作为ssh
的stdout流过,然后远程截断文件(假设cat
成功)。