【问题标题】:Run Bash Script followed by keyword or Variable运行 Bash 脚本,后跟关键字或变量
【发布时间】:2017-03-09 08:59:21
【问题描述】:

我尝试在网上搜索答案,但发现很难通过搜索条件来找到我要查找的内容。对于初学者来说,我完全是编码/脚本的菜鸟。

我得到的是了解如何在脚本中使用 read 函数从用户输入创建变量,这很棒。我的问题是你能运行一个脚本,后面跟着一个表示主机名(目标)设备的关键字。这看起来像这样。

sample.sh 主机名

目前我的理解只允许我在脚本运行后将主机名添加到变量中,但这似乎有点慢。我想要的一个例子是检查网络交换机上的接口状态的通用脚本。最好以一种我可以运行它的方式设置脚本,然后使用主机名来快速检查该单个设备。我想我缺少一些基本的理解。

我希望我能清楚地描述这一点,感谢您提前提供的任何帮助。我在下面有一个示例 bash 脚本和它传递给的期望脚本


#!/bin/bash

echo "What device do you want to check TRUNK links?"

read -e host

echo "Username:"

read -e user

echo "Password:"

read -s -e password

./show-trunk.exp $host $user $password;

#!/usr/bin/expect -f

set host [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]

#spawn echo "Running Script..."

log_user 0

spawn ssh $username@$devices

expect "*assword:"

send "$password\r"

expect "#"

log_user 1

send "show int desc | in TRUNK\r"

expect "#"

send "exit\r"

【问题讨论】:

    标签: linux bash expect cisco


    【解决方案1】:

    bash 中有一些特殊的变量表示放入其中的参数。您可以像这样指定它们:

    #!/usr/bin/env bash
    echo $1 $2 $3
    

    然后在命令行运行脚本:

    ~> ./test.sh hello bash user
    hello bash user
    

    如果您需要测试正确数量的参数,您可以执行如下简单的 if 语句:

    #!/usr/bin/env bash
    if [[ "$#" -eq 3 ]]; do
        echo $1 $2 $3
    else
        echo "Not enough arguments"
    fi
    

    那么如果你在命令行调用它:

    ~> ./test.sh hello bash user
    hello bash user
    ~> ./test.sh oops
    Not enough arguments
    

    【讨论】:

    • 非常感谢,这正是我想要的! :)
    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 2013-12-17
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2016-07-12
    相关资源
    最近更新 更多