使用 PuTTY 在 Windows 上自动在 Linux 上运行命令
- 2024-10-17 08:47:00
- admin 原创
- 69
问题描述:
我有一个场景,我需要从 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:
这是一个完全开箱即用的解决方案。
安装 AutoHotKey (ahk)
将脚本映射到某个键(例如 F9)
在 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)的名称保存会话,则此命令将不起作用,因为它将被视为远程命令的一部分。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件