Python 查找最近修改的文件并处理输出

Python 查找最近修改的文件并处理输出,python,linux,unix,find,tail,Python,Linux,Unix,Find,Tail,我的意图是: 查找过去2天内已修改的文件 获取每个文件的最后500行(因为应用程序日志文件很大) 将每个尾部输出放入不同的文件(因为我需要将其下载到远程机器) 然后,我使用PythonFabric将这些文件从远程机器下载到本地机器 我可以使用:find/opt/tomcat/logs-mtime-2-execsudotail-500'{}\\执行1和2 我能够使用以下工具执行2和3: 'sudo-tail-500'+文件名+'| sudo-tee'+日志文件名+'\u-tail' 如何在一个命令

我的意图是:

  • 查找过去2天内已修改的文件

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

  • 将每个尾部输出放入不同的文件(因为我需要将其下载到远程机器)
  • 然后,我使用PythonFabric将这些文件从远程机器下载到本地机器

    我可以使用:
    find/opt/tomcat/logs-mtime-2-execsudotail-500'{}\\执行1和2

    我能够使用以下工具执行2和3:
    'sudo-tail-500'+文件名+'| sudo-tee'+日志文件名+'\u-tail'

    如何在一个命令中完成1、2和3


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

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

    然后使用子流程模块运行它

    确保在
    subprocess.call()时管道化shell脚本

    导入子流程
    调用(“sshpass-p pass ssh-o strichostkeychecking=no\
    user@remote_server_ip“bash-s”
    比方说,您有一个脚本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)
    
    导入子流程
    服务器=[1.2.3.4、1.2.3.5、1.2.3.6]
    对于服务器中的服务器:
    调用(“sshpass-p password ssh-o strichostkeychecking=no\
    用户名@{0}'bash-s'

    只要安装了
    sshpass
    ,这就足以实现您的目标。

    编写一个shell脚本来实现您想要的最终结果

    然后使用子流程模块运行它

    确保在
    subprocess.call()时管道化shell脚本

    导入子流程
    调用(“sshpass-p pass ssh-o strichostkeychecking=no\
    user@remote_server_ip“bash-s”
    比方说,您有一个脚本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)
    
    导入子流程
    服务器=[1.2.3.4、1.2.3.5、1.2.3.6]
    对于服务器中的服务器:
    调用(“sshpass-p password ssh-o strichostkeychecking=no\
    用户名@{0}'bash-s'

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

    编写一个shell脚本并从Python调用它。我需要在多台服务器上执行上述操作…是否有比将shell脚本上载到每台服务器更简单的方法?编写一个shell脚本并从Python调用它。我需要在多台服务器上执行上述操作多台服务器…比将shell脚本上载到每台服务器更简单吗?我需要在多台服务器上执行此类操作…比将shell脚本上载到每台服务器更简单吗?在我的上述方法中,您不需要将shell脚本上载到每台服务器。您可以看到更新的答案。
    call
    的参数是单个命令;您最好将其标记为一个列表,然后丢失icky
    shell=True
    。我需要在多台服务器上执行此类操作…有没有比将shell脚本上载到每台服务器更简单的方法?您不需要按照我上面的方法将shell脚本上载到每台服务器。您可以看到更新的答案。
    call
    的参数是单个命令;您最好将其标记为一个列表,然后丢失icky
    shell=True