使用 PuTTY 在 Windows 上自动在 Linux 上运行命令

2024-10-17 08:47:00
admin
原创
69
摘要:问题描述:我有一个场景,我需要从 Windows 频繁运行Linux shell命令(使用不同的文件名)。我使用 PuTTY 和 WinSCP 来执行此操作(需要登录名和密码)。文件通过 WinSCP 复制到 Linux 计算机中的预定义文件夹,然后从 PuTTY 运行命令。有没有办法通过程序自动执行此操作。...

问题描述:

我有一个场景,我需要从 Windows 频繁运行Linux shell命令(使用不同的文件名)。我使用 PuTTY 和 WinSCP 来执行此操作(需要登录名和密码)。文件通过 WinSCP 复制到 Linux 计算机中的预定义文件夹,然后从 PuTTY 运行命令。有没有办法通过程序自动执行此操作。理想情况下,我想右键单击 Windows 中的文件并发出命令,将文件复制到远程计算机并以文件名作为参数运行预定义命令(在 PuTTy 中)。


解决方案 1:

Putty通常附带“plink”实用程序。

这本质上是作为 Windows .exe 实现的“ssh”命令行命令。

它在 Putty 手册的“使用命令行工具 plink”下有很好的记录。

你只需要包装一个命令,例如:

plink root@myserver /etc/backups/do-backup.sh

在.bat 脚本中。

您还可以使用常见的 shell 结构(例如分号)来执行多个命令。例如:

plink read@myhost ls -lrt /home/read/files;/etc/backups/do-backup.sh

解决方案 2:

常见的自动登录方法可能存在安全问题。下面记录了其中一种最简单的方法:

  • 从 Windows 命令行运行 Putty

至于在 putty UI 中执行命令的部分,连接>SSH> 有一个用于远程命令的字段。

4.17 SSH 面板

SSH 面板允许您配置仅适用于 SSH 会话的选项。

4.17.1 在服务器上执行特定命令

在 SSH 中,您不必在服务器上运行常规 shell 会话。相反,您可以选择运行单个特定命令(例如邮件用户代理)。如果您想这样做,请在“远程命令”框中输入该命令。http:
//the.earth.li/~sgtatham/putty/0.53/htmldoc/Chapter4.html

简而言之,你的答案可能与下面的文字类似:

  • 让Putty在远程服务器运行命令

解决方案 3:

您可以编写 TCL 脚本并建立与该 Linux 机器的 SSH 会话并自动发出命令。查看http://wiki.tcl.tk/11542以获取简短教程。

解决方案 4:

您可以创建一个 putty 会话,并在启动会话时在服务器上自动加载脚本:

putty -load "sessionName" 

在远程命令中,指向远程脚本。

解决方案 5:

您可以使用 WinSCP 执行这两项任务(上传和命令执行)。使用 WinSCP 脚本如下:

option batch abort
option confirm off
open your_session
put %1%
call script.sh
exit

该命令参考call

https ://winscp.net/eng/docs/scriptcommand_call

语法参考%1%

https://winscp.net/eng/docs/scripting#syntax

然后您可以像这样运行脚本:

winscp.exe /console /script=script_path/upload.txt /parameter file_to_upload.dat

实际上,您可以将上述命令的快捷方式放到 Windows 资源管理器的“发送到”菜单中,这样您只需右键单击任何文件,然后转到“发送到”>“使用 WinSCP 上传”并执行远程命令(= 快捷方式的名称)。

为此,请转到该文件夹%USERPROFILE%SendTo​​并创建具有以下目标的快捷方式:

winscp_pathwinscp.exe /console /script=script_path/upload.txt /parameter %1

请参阅在 Explorer 的“发送到”菜单中创建条目。

解决方案 6:

这是一个完全开箱即用的解决方案。

  1. 安装 AutoHotKey (ahk)

  2. 将脚本映射到某个键(例如 F9)

  3. 在 ahk 脚本中,a) 将命令 (.ksh) 文件通过 FTP 传输到 Linux 机器

b) 像下面这样使用 plink。如果你有 putty,应该安装 Plink。

plink 会话名称-l 用户名-pw 密码 test.ksh

或者

plink -ssh example.com -l 用户名 -pw 密码 test.ksh

只要您在 Windows 中按下 F9,所有步骤就会按顺序执行。

解决方案 7:

代码:

using System;
using System.Diagnostics;
namespace playSound
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(args[0]);

            Process amixerMediaProcess = new Process();
            amixerMediaProcess.StartInfo.CreateNoWindow = false;
            amixerMediaProcess.StartInfo.UseShellExecute = false;
            amixerMediaProcess.StartInfo.ErrorDialog = false;
            amixerMediaProcess.StartInfo.RedirectStandardOutput = false;
            amixerMediaProcess.StartInfo.RedirectStandardInput = false;
            amixerMediaProcess.StartInfo.RedirectStandardError = false;
            amixerMediaProcess.EnableRaisingEvents = true;

            amixerMediaProcess.StartInfo.Arguments = string.Format("{0}","-ssh username@"+args[0]+" -pw password -m commands.txt");
            amixerMediaProcess.StartInfo.FileName = "plink.exe";
            amixerMediaProcess.Start();


            Console.Write("Presskey to continue . . . ");
            Console.ReadKey(true);
    }
}

}

示例命令.txt:

附言

链接: https: //huseyincakir.wordpress.com/2015/08/27/send-commands-to-a-remote-device-over-puttyssh-putty-send-command-from-command-line/

解决方案 8:

尝试MtPutty,你可以用它自动完成 ssh 登录。它是一款很棒的工具,特别是当你需要多次登录多个服务器时。点击此处尝试

另一个值得尝试的工具是TeraTerm。它对于 ssh 自动化操作来说真的很容易使用。你可以在这里获取它。但我最喜欢的始终是 MtPutty。

解决方案 9:

如果您使用基于密钥的身份验证,使用保存的 Putty 会话似乎效果很好,例如在远程服务器(在我的情况下是 ec2)上运行 shell 脚本。保存的配置将负责身份验证。

C:\用户> plink saved_putty_session_name path_to_shell_file/filename.sh

请记住,如果您使用类似(user@hostname)的名称保存会话,则此命令将不起作用,因为它将被视为远程命令的一部分。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用