如何在远程 Unix 服务器中为 运行 命令编写批处理文件
How to write a batch file for running commands in a remote Unix server
我正在尝试将文件从基于 Linux 的服务器复制到我的 Windows PC。我要复制的文件不容易获得,即我在 putty
中执行了 运行 以下命令
tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print }' |sed 's/\"//g' | uniq | sort -n |uniq >> myfile.txt
将数据移动到我的文件。现在我必须每 30 分钟将我的文件从服务器移动到 PC。我可以 运行 pscp
中的代码
pscp -pw PASS user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfolder
用于将文件移动到我的 PC,但我需要它自动完成。另外 "myfile" 需要每 30 分钟自动更新一次。
`
有很多方法可以做到这一点。我个人会在 Windows PC 上设置一个 SSH 服务器(例如 FreeSSHd http://www.freesshd.com/),这样所有事情都可以使用 Linux 服务器一步完成。如果您无法在您的 PC 上安装软件,您仍然可以通过在 Windows PC 和 Linux 服务器上安排脚本来完成这项工作。
首先配置SSH public-key认证从Windows PC连接到Linux服务器。
这是比在脚本中使用明文密码更安全的替代方法,也是计划任务的更好配置。
在 Windows PC 上执行这些步骤:
- 打开 PuTTYgen 密钥生成实用程序
- 在 "Parameters" select "SSH-2 RSA" 下,保留默认位数 1024
- 在 "Actions" 下单击 "Generate" 并在出现提示时四处移动光标
- 将 "Key Passphrase" 留空,因为您希望在不每 30 分钟输入密码的情况下自动执行此过程
- 在 "Actions" 下,单击 "Save public key" 并提供密钥的文件名和位置
- 在 "Actions" 下,单击 "Save private key",确保 "Save as type" 设置为 "PuTTY Private Key Files (*.ppk)"
- 打开在第 5 步中保存的 public 密钥(非常重要 - 确保它是 PUBLIC 密钥,而不是私钥),然后将内容复制到剪贴板
在 Linux 服务器上执行这些步骤:
ssh 进入 Linux 服务器,然后使用您喜欢的编辑器打开 ~/.ssh/authorized_keys 文件。如果不存在,您可能需要执行这些命令
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
vi ~/.ssh/authorized_keys
将 Windows public 密钥的内容粘贴到此文件中,然后保存并关闭文件
接下来,在Linux服务器上创建一个计划任务,让"myfile"每30分钟更新一次。
打开文本编辑器并将脚本的内容放入文件中,例如"vi update_myfile.sh"
#!/bin/bash
tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print }' |sed 's/\"//g' | uniq | sort -n | uniq >> /var/mp/95910/log/myfile.txt
(根据需要编辑路径)
使用 cron 将任务安排到 运行 每 30 分钟(每小时过去 15 和 45 分钟)。 运行 命令 "crontab -e",并添加此行,根据需要更改路径:
15,45 * * * * /home/<username>/update_myfile.sh
最后,在 Windows PC 上创建一个脚本来复制文件,与 Linux 脚本 运行s 的时间偏移。
在记事本中创建一个名为 copy_myfile.bat 的脚本,其中包含:
pscp user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfo
您没有提到您在 PC 上 运行ning 的 windows 版本,但是如果 Windows7,请单击“开始”并在“控制面板”下单击 "System and Security",然后单击 "Administrative Tools",然后单击 "Task Scheduler"。如果 Windows 8,只需单击“开始”,然后键入 "Task Scheduler"。
在 Task Scheduler 中,单击“操作”,然后 "Create Task" 应会出现“创建任务”对话框
在“常规”选项卡下,为任务指定名称和描述
在触发器下,单击新建,然后在出现的对话框中 select 每日,单击 "Repeat task every" 复选框和 select“30 分钟”,然后单击确定
在操作下,单击新建,保留操作设置为 "Start a program" 并浏览到在步骤 1 中创建的 copy_myfile.bat 脚本。单击确定
单击“确定”,任务应自动安排到 运行
因此,每隔 :15 和 :45 将更新 Linux 服务器文件,并且应该每隔 :00 和 :30 将其复制到您的 Windows PC。这些时间可以根据您的需要进行调整。如果两个系统的时钟同步,你可能不需要15分钟的摆动空间。
希望对您有所帮助!
我正在尝试将文件从基于 Linux 的服务器复制到我的 Windows PC。我要复制的文件不容易获得,即我在 putty
中执行了 运行 以下命令tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print }' |sed 's/\"//g' | uniq | sort -n |uniq >> myfile.txt
将数据移动到我的文件。现在我必须每 30 分钟将我的文件从服务器移动到 PC。我可以 运行 pscp
中的代码pscp -pw PASS user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfolder
用于将文件移动到我的 PC,但我需要它自动完成。另外 "myfile" 需要每 30 分钟自动更新一次。
`
有很多方法可以做到这一点。我个人会在 Windows PC 上设置一个 SSH 服务器(例如 FreeSSHd http://www.freesshd.com/),这样所有事情都可以使用 Linux 服务器一步完成。如果您无法在您的 PC 上安装软件,您仍然可以通过在 Windows PC 和 Linux 服务器上安排脚本来完成这项工作。
首先配置SSH public-key认证从Windows PC连接到Linux服务器。 这是比在脚本中使用明文密码更安全的替代方法,也是计划任务的更好配置。
在 Windows PC 上执行这些步骤:
- 打开 PuTTYgen 密钥生成实用程序
- 在 "Parameters" select "SSH-2 RSA" 下,保留默认位数 1024
- 在 "Actions" 下单击 "Generate" 并在出现提示时四处移动光标
- 将 "Key Passphrase" 留空,因为您希望在不每 30 分钟输入密码的情况下自动执行此过程
- 在 "Actions" 下,单击 "Save public key" 并提供密钥的文件名和位置
- 在 "Actions" 下,单击 "Save private key",确保 "Save as type" 设置为 "PuTTY Private Key Files (*.ppk)"
- 打开在第 5 步中保存的 public 密钥(非常重要 - 确保它是 PUBLIC 密钥,而不是私钥),然后将内容复制到剪贴板
在 Linux 服务器上执行这些步骤:
ssh 进入 Linux 服务器,然后使用您喜欢的编辑器打开 ~/.ssh/authorized_keys 文件。如果不存在,您可能需要执行这些命令
mkdir -p ~/.ssh touch ~/.ssh/authorized_keys vi ~/.ssh/authorized_keys
将 Windows public 密钥的内容粘贴到此文件中,然后保存并关闭文件
接下来,在Linux服务器上创建一个计划任务,让"myfile"每30分钟更新一次。
打开文本编辑器并将脚本的内容放入文件中,例如"vi update_myfile.sh"
#!/bin/bash tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print }' |sed 's/\"//g' | uniq | sort -n | uniq >> /var/mp/95910/log/myfile.txt
(根据需要编辑路径)
使用 cron 将任务安排到 运行 每 30 分钟(每小时过去 15 和 45 分钟)。 运行 命令 "crontab -e",并添加此行,根据需要更改路径:
15,45 * * * * /home/<username>/update_myfile.sh
最后,在 Windows PC 上创建一个脚本来复制文件,与 Linux 脚本 运行s 的时间偏移。
在记事本中创建一个名为 copy_myfile.bat 的脚本,其中包含:
pscp user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfo
您没有提到您在 PC 上 运行ning 的 windows 版本,但是如果 Windows7,请单击“开始”并在“控制面板”下单击 "System and Security",然后单击 "Administrative Tools",然后单击 "Task Scheduler"。如果 Windows 8,只需单击“开始”,然后键入 "Task Scheduler"。
在 Task Scheduler 中,单击“操作”,然后 "Create Task" 应会出现“创建任务”对话框
在“常规”选项卡下,为任务指定名称和描述
在触发器下,单击新建,然后在出现的对话框中 select 每日,单击 "Repeat task every" 复选框和 select“30 分钟”,然后单击确定
在操作下,单击新建,保留操作设置为 "Start a program" 并浏览到在步骤 1 中创建的 copy_myfile.bat 脚本。单击确定
单击“确定”,任务应自动安排到 运行
因此,每隔 :15 和 :45 将更新 Linux 服务器文件,并且应该每隔 :00 和 :30 将其复制到您的 Windows PC。这些时间可以根据您的需要进行调整。如果两个系统的时钟同步,你可能不需要15分钟的摆动空间。
希望对您有所帮助!