如何编写批处理文件以在远程Unix服务器中运行命令

时间:2015-07-25 00:20:14

标签: linux batch-file automation putty pscp

我正在尝试将文件从基于Linux的服务器复制到我的Windows PC。我想要复制的文件不是很容易获得,即我必须在putty中运行以下命令

tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print $5 $13}' |sed 's/\"//g' | uniq | sort -n |uniq >> myfile.txt

将数据移动到myfile。现在我必须每隔30分钟将myfile从服务器移动到PC。我可以在pscp中运行代码

pscp -pw PASS user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfolder

将文件移动到我的电脑但我需要自动完成。 “myfile”也需要每30分钟自动更新一次。

`

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标。我个人会在Windows PC上设置一个SSH服务器(例如FreeSSHd http://www.freesshd.com/),这样就可以使用Linux服务器一步完成所有操作。如果您无法在PC上安装软件,您仍然可以通过在Windows PC和Linux服务器上安排脚本来完成这项工作。

首先配置SSH公钥验证,以便从Windows PC连接到Linux服务器。 这是一种更安全的替代方法,可以在脚本中以明文形式显示密码,并为计划任务提供更好的配置。

在Windows PC上执行以下步骤:

  1. 打开PuTTYgen密钥生成实用程序
  2. "参数"选择" SSH-2 RSA"并将位数保留为默认值1024
  3. "行动"点击"生成"
  4. 并在提示时移动光标
  5. 离开" Key Passphrase"空白,因为您希望自动完成流程而不必每30分钟输入一次密码
  6. 在"操作"下,点击"保存公钥"并提供密钥的文件名和位置
  7. 在"操作"下,点击"保存私钥",确保"另存为类型"设置为" PuTTY私钥文件(* .ppk)"
  8. 打开在步骤5中保存的公钥(非常重要 - 确保它是PUBLIC密钥,而不是私钥),并将内容复制到剪贴板中
  9. 在Linux服务器上执行以下步骤:

    1. ssh进入Linux服务器,并使用您喜欢的编辑器打开〜/ .ssh / authorized_keys文件。如果它不存在,您可能需要执行这些命令

      mkdir -p ~/.ssh
      touch ~/.ssh/authorized_keys
      vi ~/.ssh/authorized_keys
      
    2. 将Windows公钥的内容粘贴到此文件中,然后保存并关闭文件

    3. 接下来,在Linux服务器上创建一个计划任务,以保持" myfile"每30分钟更新一次。

      1. 打开文本编辑器并将脚本内容放在文件中,例如" vi update_myfile.sh"

        #!/bin/bash
        tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print $5 $13}' |sed 's/\"//g' | uniq | sort -n | uniq >> /var/mp/95910/log/myfile.txt
        
      2. (根据需要编辑路径)

        1. 使用cron将任务计划为每30分钟运行一次(每小时过去15分钟和45分钟)。运行命令" crontab -e",并添加此行,根据需要更改路径:

          15,45 * * * * /home/<username>/update_myfile.sh
          
        2. 最后,在Windows PC上创建一个脚本以复制文件,其时间偏离Linux脚本运行时的时间。

          1. 在记事本中创建一个名为copy_myfile.bat的脚本,其中包含:

            pscp user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfo
            
          2. 您没有提到您在PC上运行的Windows版本,但是如果是Windows 7,请单击开始,然后在控制面板下单击&#34;系统和安全&#34;,然后&# 34;管理工具&#34;,然后&#34;任务计划程序&#34;。如果是Windows 8,只需单击“开始”,然后键入&#34;任务计划程序&#34;。

          3. 在任务计划程序中,单击操作,然后单击&#34;创建任务&#34;并且应出现“创建任务”对话框

          4. 在“常规”选项卡下,为任务指定名称和描述

          5. 在“触发器”下,单击“新建”,然后在出现的对话框中选择“每日”,单击“&#34;每次重复任务”。复选框并选择&#34; 30分钟&#34;然后单击“确定”

          6. 在“操作”下,单击“新建”,将“操作”设置为“#34;启动程序&#34;并浏览到步骤1中创建的copy_myfile.bat脚本。单击“确定”

          7. 单击“确定”,任务应安排为自动运行

          8. 所以每个:15和:45将更新Linux服务器文件,并且应该每次:00和30复制到Windows PC。这些时间可以根据需要进行调整。如果两个系统上的时钟同步,则可能不需要15分钟的摆动空间。

            希望这有帮助!