个性化阅读
专注于IT技术分析

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

本文概述

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"

# Example

C:\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并执行分别替换凭据和参数的命令:

cmd.exe putty实现

最后, 在cmd.exe中执行命令后, 将打开putty并按照我们在第一个示例中所做的那样执行脚本, 服务器的日期将打印在控制台中:

Shell脚本

提示:你可以使用其他语言(例如C#)创建一个界面, 只需单击一下即可实现更多自动化

玩得开心 。

捕获putty输出(可选)

如果你的bash脚本不是简单明了的(它可以生成包含有关错误, 信息等信息的输出), 则你可能需要保存内容以在脚本执行关闭时进行分析。

由于putty通常会关闭控制台, 如果在执行脚本的最后一行时没有语句暂停它, 并且无法重定向输出(但可以通过plink实用程序实现), 则我们需要将此任务指定给PuTTY应用程序。

1)打开putty, 单击顶部图标, 然后选择更改设置。

步骤1 putty登录到外部文件

2)单击右侧列表中的日志记录项目。现在, 在”会话登录”区域中选择”所有会话输出”选项按钮。

油灰步骤2日志输出到外部文件中

最后, 在系统中选择putty.log文件的路径, 然后单击Apply。

油灰产生的所有输出都将写入此日志文件。

赞(0)
未经允许不得转载:srcmini » 如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本

评论 抢沙发

评论前必须登录!