我已经通过批处理文件实现了自动化,以登录到远程服务器并运行一系列命令。我的批处理文件内容如下:
@ECHO OFF
ECHO 1 -^> Connect 2 Server
ECHO 2 -^> Quit
SET /p ID=Enter Choice :
IF "%ID%"=="1" start "" C:\work\putty.exe -load SessionName -l UserName -pw Password -m cmd.txt
IF "%ID%"=="2" exit
我的cmd.txt文件包含以下命令:
su superuser
password
ssh server
password
su MyID
password
批处理成功连接到服务器;但它未能保留会话。任何调整都将不胜感激。
答案 0 :(得分:0)
对于我自己的用途,我验证了-m开关对putty的作用
-m选项执行与PuTTY配置框的SSH面板中的“远程命令”框类似的功能(请参阅第4.18.1节)。但是,-m选项需要获得本地文件名,并且它将从该文件中读取命令。
对于某些服务器(特别是Unix系统),您甚至可以在此文件中放置多行,并按顺序执行多个命令,或者整个shell脚本;但这可以说是一种滥用,并且无法在所有服务器上运行。特别是,众所周知,不能使用某些“嵌入式”服务器,例如Cisco路由器。
我大概猜到了。我认为发生的事情是你的命令可能正常运行,但它在完成时终止了会话(这也是unix上ssh [command]的默认行为。为了解决这个问题,你可以尝试在结束时运行'bash'来启动作为该用户的终端,它应该一直运行直到你退出。如果这不起作用,你可以尝试运行'sleep 10'以查看会话是否保持运行更长时间 - 应该验证我们正在处理的问题。
就像stackoverflow严格要求问题的答案一样,我希望我已经在上面提供了这个问题。在这种情况下,我觉得如果不对我正在做的事情的严重安全问题进行标记将是一种疏忽。我会坚持认为你不应回答有关安全地做某事的问题(涉及ssh和root密码),而不会覆盖潜在的安全隐患。
你正在做的事情似乎是一个坏主意,因为: