运行Bash脚本,然后运行关键字或变量

时间:2017-03-09 08:59:22

标签: linux bash expect cisco

我试图在线搜索答案,但发现很难说出搜索条件以找到我正在寻找的内容。对于初学者来说,我总是编写/编写脚本。

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

sample.sh主机名

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

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

的expect脚本
#!/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"

1 个答案:

答案 0 :(得分: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