如何使用批处理文件自动进行 SSH 登录?

问题描述 投票:0回答:1

在我的工作场所,我们必须通过 CMD 使用 SSH 来访问我们的 Cisco 交换机。我想编写一个批处理文件来半自动化登录过程,以便我们所需要做的就是输入所需的交换机名称和密码。我们不能使用 PUTTY、Cisco Analyser、SSH 密钥、expect 等,我们唯一允许的方法是 CMD(这也让我们感到困惑!)

我目前是我们中唯一的一个人,我在这方面的知识达不到这份工作的标准,因此请各位好心人提供一些帮助!

我希望脚本首先询问我想要连接到哪个交换机,使用它作为变量来填写命令,此时交换机将要求输入密码来验证访问。

连接的基本命令是:

ssh <account-name>@<switch-name(FQDN)>

到目前为止我的脚本如下:

@echo off
title SSH Switch Access
echo Please enter destination switch name...

正如我所说,我对编写脚本相对较新,因为我来自硬件背景,所以从来没有真正需要大量使用它们,或者周围有其他人可以做到这一点,尽管我很想学习如何做到这一点我自己有很多东西需要学习,而且我需要很长时间才能熟悉独自完成这些工作。

batch-file ssh
1个回答
0
投票

这是一个例子。您可以在变量中将设备列为逗号分隔值。只需对它们运行一个 for 循环,然后使用

choice
命令为主机名分配一个数字。您只需按键盘数字即可建立连接。

因为只能使用 9 个数值(除非您使用非数字),我只是创建了一个下一个函数,您可以在其中使用选项 9 来显示下一组。如果您愿意,可以使用类似的方法添加上一个。只需更新您的设备列表和用户名即可。

@echo off & cls & title SSH Switch Access
setlocal enabledelayedexpansion
set myuser=USERNAME
set "switchList=switch-1,switch-2,switch-3,switch-4,switch-5,switch-6,switch-7,switch-8,switch-9,switch-10,switch-11,switch-12,switch-13,switch-14,switch-15,switch-16,switch-17,switch-18,switch-19,switch-20"
for %%i in (%switchList%) do (
   set /a cnt+=1
   set "dev[!cnt!]=%%i"
   call echo !cnt!. %%dev[!cnt!]%%
   set chosen=!chosen!!cnt!
   if !cnt! equ 8 (
      set /a cnt+=1
      set "dev[9]=Next"
      call echo !cnt!. %%dev[!cnt!]%%
      set chosen=!chosen!!cnt!
      call :list
      if !selected! neq 9 goto :EOF
      cls
      set /a cnt=0
      set chosen=
   )
)

:list
echo(
choice /c %chosen% /m "Select destination switch:"
if not %errorlevel% equ 9 ssh %myuser%@!dev[%errorlevel%]!
set "selected=%errorlevel%"
if not %errorlevel% equ 9 goto :EOF

请注意,如果您有大量设备列表,您可以将设备添加到文件中并从文件中读取。同样,这可能意味着要跳过很多页面才能找到您的设备,在这种情况下,只需运行以下命令并根据要求输入交换机名称就简单得多:

@echo off
set myuser=USERNAME
set /p "switch=Please enter destination switch name : "
ssh %myuser%@%switch%
© www.soinside.com 2019 - 2024. All rights reserved.