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

2024-10-17 08:47:00
admin
原创
262
摘要:问题描述:我有一个场景,我需要从 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)的名称保存会话,则此命令将不起作用,因为它将被视为远程命令的一部分。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1267  
  IPD(Integrated Product Development)即集成产品开发,是一套先进的、成熟的产品开发管理理念、模式和方法。随着市场竞争的日益激烈,企业对于提升产品开发效率、降低成本、提高产品质量的需求愈发迫切,IPD 项目管理咨询市场也迎来了广阔的发展空间。深入探讨 IPD 项目管理咨询的市场需求与发展,...
IPD集成产品开发流程   27  
  IPD(Integrated Product Development)产品开发流程是一套先进的、被广泛应用的产品开发管理体系,它涵盖了从产品概念产生到产品推向市场并持续优化的全过程。通过将市场、研发、生产、销售等多个环节紧密整合,IPD旨在提高产品开发的效率、质量,降低成本,增强企业的市场竞争力。深入了解IPD产品开发...
IPD流程中TR   31  
  IPD(Integrated Product Development)测试流程是确保产品质量、提升研发效率的关键环节。它贯穿于产品从概念到上市的整个生命周期,对企业的成功至关重要。深入理解IPD测试流程的核心要点,有助于企业优化研发过程,打造更具竞争力的产品。以下将详细阐述IPD测试流程的三大核心要点。测试策略规划测试...
华为IPD   26  
  华为作为全球知名的科技企业,其成功背后的管理体系备受关注。IPD(集成产品开发)流程作为华为核心的产品开发管理模式,在创新管理与技术突破方面发挥了至关重要的作用。深入剖析华为 IPD 流程中的创新管理与技术突破,对于众多企业探索自身发展路径具有重要的借鉴意义。IPD 流程概述IPD 流程是一种先进的产品开发管理理念和方...
TR评审   26  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用