如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本

本文概述

  • 创建一个.sh文件
  • 在Windows命令提示符下使用PuTTY执行脚本
  • 捕获putty输出(可选)
PuTTY不需要任何介绍, 因为它是广泛使用的远程控制台实用程序之一。 PuTTY是SSH和telnet客户端。
尽管使用控制台已经很简单, 但是你有时还是很容易出错(并意外删除项目文件夹)。你可以自动执行服务器任务, 而无需键入日常所需的所有内容(转到文件夹, 在其中执行一些操作, 然后退出, 导航至其他文件夹等)。
使你和你的团队变得容易。在本文中, 你将学习如何使用PuTTY和Windows命令提示符从Windows执行Shell脚本到远程服务器。
创建一个.sh文件 通常, .sh文件是可以在终端中执行的Shell脚本。该文件格式通常用于Unix shar实用程序创建的Unix shell文件。
有多安全?
你可能会觉得很奇怪, 必须手动执行另一个任务才能执行文件。但这部分是由于对安全性的强烈需求。
基本上, 当你下载并运行bash脚本时, 就像有人告诉你” 依次在计算机上运行所有这些命令, 我??保证结果会很好” 一样。问问自己是否信任提供此文件的一方, 问问自己是否确定已从你认为的相同位置下载了文件, 甚至还可以浏览一下以查看是否存在异物(尽管这需要你了解* nix命令和bash编程知识)。
结论:仅在你知道它们如何工作时才执行你知道的命令。
首先, 在某处以.sh扩展名(command_file.sh)创建文件。然后, 编写一些shell脚本。
在此示例(最基本的示例)中, 我们将在Putty控制台中打印日期。
# command_file.sh#Print the date in putty echo `date` # Don't close putty to see the output of the date read -rsp $'Press any key to continue...\n' -n1 key

那是, 真的很容易吗?
如果需要, 请开始创建自己的示例, 以下示例显示了与通常使用putty(subversion命令svn update)执行的命令的基本交互:
注意:与你第一次创建要执行的.sh文件一样, 请确保要做什么以防止对服务器造成任何损坏。我们建议你仅使用以前的脚本进行测试, 如果你有更多经验, 请尝试使用自己的脚本。
# command.sh# Create a variable named directoryPath # it contains where your project is located directoryPath=/var/www/vhosts/myproject # Go to the project using the cd command cd $directoryPath # Update using subversion command svn update # Ready ! that was all. # But let's make something else ! # Delete the content from a folder in the project # Note: the folder name is "deleteMe" and it is inside /myproject # Therefore the path is relative to where we are located. # Real path of folder = /var/www/vhosts/myproject/deleteMe folderToDelete=deleteMe #Navigate to the deleteMe folder cd $folderToDelete #Delete content using rm command rm -rf *# Piece of cake !

开始阅读有关使用服务器中的.sh文件可以执行的所有操作的更多信息。现在我们的脚本已经准备好了, 我们只需要学习如何自动执行它即可。
在Windows命令提示符下使用PuTTY执行脚本 现在你的脚本文件已经准备好, 并且(理论上)你知道要使用它来实现什么, 我们只需要执行它并节省许多宝贵的时间。
该命令的结构如下:
putty.exe [连接(-ssh)] [用户名@服务器IP-或-域] [参数(-pw密码)] [参数(-m(从文件中读取远程命令或脚本), sh文件到本地路径)]
-m选项期望得到一个本地文件名, 它将从该文件读取命令。
对于某些服务器(尤其是Unix系统), 你甚至可以在该文件中放入多行, 并依次执行多个命令或整个Shell脚本;但这可以说是一种滥用, 并且不能期望它在所有服务器上都能正常工作。特别是, 已知无法与某些” 嵌入式” 服务器一起使用, 例如Cisco路由器。
该选项在文件传输工具PSCP和PSFTP中不可用。
整个命令可以在Windows的命令提示符(cmd.exe)上轻松执行, 例如:
C:\path\to\putty.exe -ssh username@192.0.0.0.0 -pw "password" -m "C:\path\to\command_sh_script_file.sh"# ExampleC:\Program Files\Putty\putty.exe -ssh user@192.x.x.x.x -pw "ComplexPassword" -m "C:\Users\Admin\Desktop\command_file.sh"

注意:你可以在Windows中为putty定义一个环境变量, 然后将其用作%putty%, 而不是使用putty可执行文件的完整路径。
打开cmd.exe并执行分别替换凭据和参数的命令:
如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本

文章图片
最后, 在cmd.exe中执行命令后, 将打开putty并按照我们在第一个示例中所做的那样执行脚本, 服务器的日期将打印在控制台中:
如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本

文章图片
提示:你可以使用其他语言(例如C#)创建一个界面, 只需单击一下即可实现更多自动化
玩得开心 。
捕获putty输出(可选) 如果你的bash脚本不是简单明了的(它可以生成包含有关错误, 信息等信息的输出), 则你可能需要保存内容以在脚本执行关闭时进行分析。
由于putty通常会关闭控制台, 如果在执行脚本的最后一行时没有语句暂停它, 并且无法重定向输出(但可以通过plink实用程序实现), 则我们需要将此任务指定给PuTTY应用程序。
1)打开putty, 单击顶部图标, 然后选择更改设置。
如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本

文章图片
2)单击右侧列表中的日志记录项目。现在, 在” 会话登录” 区域中选择” 所有会话输出” 选项按钮。
如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本

文章图片
最后, 在系统中选择putty.log文件的路径, 然后单击Apply。
【如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本】油灰产生的所有输出都将写入此日志文件。

    推荐阅读