如何在批处理文件中运行一系列UNIX命令而不终止会话?

时间:2013-09-04 04:10:40

标签: batch-file

我已经通过批处理文件实现了自动化,以登录到远程服务器并运行一系列命令。我的批处理文件内容如下:

@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

批处理成功连接到服务器;但它未能保留会话。任何调整都将不胜感激。

1 个答案:

答案 0 :(得分:0)

对于我自己的用途,我验证了-m开关对putty的作用

  

-m选项执行与PuTTY配置框的SSH面板中的“远程命令”框类似的功能(请参阅第4.18.1节)。但是,-m选项需要获得本地文件名,并且它将从该文件中读取命令。

     

对于某些服务器(特别是Unix系统),您甚至可以在此文件中放置多行,并按顺序执行多个命令,或者整个shell脚本;但这可以说是一种滥用,并且无法在所有服务器上运行。特别是,众所周知,不能使用某些“嵌入式”服务器,例如Cisco路由器。

我大概猜到了。我认为发生的事情是你的命令可能正常运行,但它在完成时终止了会话(这也是unix上ssh [command]的默认行为。为了解决这个问题,你可以尝试在结束时运行'bash'来启动作为该用户的终端,它应该一直运行直到你退出。如果这不起作用,你可以尝试运行'sleep 10'以查看会话是否保持运行更长时间 - 应该验证我们正在处理的问题。

就像stackoverflow严格要求问题的答案一样,我希望我已经在上面提供了这个问题。在这种情况下,我觉得如果不对我正在做的事情的严重安全问题进行标记将是一种疏忽。我会坚持认为你不应回答有关安全地做某事的问题(涉及ssh和root密码),而不会覆盖潜在的安全隐患。

你正在做的事情似乎是一个坏主意,因为:

  • 它会为找到该文件的任何人创建一个包含两个未加密的root用户密码的文件
  • 此脚本默认情况下也提供 root访问权限,这不是一种安全的操作方式。偶然在错误的窗口输入rm -r?
  • 另外,有人弄乱你的第二跳(比如说,用脚本替换ssh服务器来运行ssh但是记录密码)会获得具有root权限的第三跳密码。
  • SSH密钥应该取消使用密码登录。使用它们。
  • SSH端口转发还允许您从第二跳跳过sshing - 而不只是隧道穿过它(我猜第三个框不能上网),再次使用ssh键可以跳过密码。
  • 第一个'su超级用户'不应该是必要的,除非你的权限不允许你ssh(那个盒子上是否存在ssh_allow组?),这可能是你应该实际修复的问题 - 不是你的成员该组允许使用SSH。
相关问题