0

我正在尝试将文件从基于 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 分钟将我的文件从服务器移动到 PC。我可以在 pscp 中运行代码

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

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

`

4

1 回答 1

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. 将“Key Passphrase”留空,因为您希望在不每 30 分钟输入一次密码的情况下自动执行该过程
  5. 在“操作”下,单击“保存公钥”并提供密钥的文件名和位置
  6. 在“操作”下,单击“保存私钥”,确保“保存类型”设置为“PuTTY 私钥文件 (*.ppk)”
  7. 打开第 5 步中保存的公钥(非常重要 - 确保它是公钥,而不是私钥),然后将内容复制到剪贴板

在 Linux 服务器上执行以下步骤:

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

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

接下来,在 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
    

(根据需要编辑路径)

  1. 使用 cron 将任务安排为每 30 分钟运行一次(每小时 15 和 45 分钟)。运行命令“crontab -e”,并添加这一行,根据需要更改路径:

    15,45 * * * * /home/<username>/update_myfile.sh
    

最后,在 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,请单击“开始”并在“控制面板”下单击“系统和安全”,然后单击“管理工具”,然后单击“任务计划程序”。如果是 Windows 8,只需单击开始,然后键入“任务计划程序”。

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

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

  5. 在 Triggers 下,单击 New,然后在出现的对话框中选择 Daily,单击“Repeat task every”复选框并选择“30 minutes”,然后单击 OK

  6. 在 Actions 下,单击 New,将 Action 设置为“Start a program”并浏览到在步骤 1 中创建的 copy_myfile.bat 脚本。单击 OK

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

因此,每 :15 和 :45 都会更新 Linux 服务器文件,并且应该每隔 :00 和 :30 将其复制到您的 Windows PC。这些时间可以根据您的需要进行调整。如果两个系统上的时钟同步,您可能不需要 15 分钟的回旋余地。

希望这可以帮助!

于 2015-07-25T02:20:53.013 回答