查找最近修改过的文件并操纵输出

时间:2016-03-01 10:58:36

标签: python linux unix find tail

我的意图:

  1. 查找过去2天内修改过的文件。

  2. 获取每个文件的最后500行(因为应用程序日志文件很大)。

  3. 将每个尾部输出放入不同的文件中(因为我需要将其下载到远程计算机上)。
  4. 然后我使用Python Fabric将这些文件从远程计算机下载到我的本地计算机。

    能够使用find /opt/tomcat/logs -mtime -2 -exec sudo tail -500 '{}' \;

    执行1和2

    能够做2和3使用:  'sudo tail -500 ' + filename + ' | sudo tee ' + logfilename + '_tail'

    如何在1个命令中完成1,2和3?

    我在1命令中需要它,因为我使用Python sshcon.exec_command()在远程计算机上执行此操作。

1 个答案:

答案 0 :(得分:0)

编写shell脚本以实现所需的最终结果。

然后使用子进程模块运行它。

确保在subprocess.call()

期间管道shell脚本
import subprocess
subprocess.call("sshpass -p pass ssh -o StrictHostKeyChecking=no \
               user@remote_server_ip  'bash -s' < your_script.sh ",shell=True)

假设你有一个脚本test_script.sh,你想在三台服务器上运行它(1.2.3.4,1.2.3.5,1.2.3.6)。现在的方法应该是:

import subprocess
servers = [1.2.3.4, 1.2.3.5, 1.2.3.6]
for server in servers:
    subprocess.call("sshpass -p password ssh -o StrictHostKeyChecking=no \
           username@{0} 'bash -s' < test_script.sh ".format(server),shell=True)

如果安装了sshpass,这将足以实现您的目标。