2017-03-09 84 views
0

我试图在线搜索答案,但发现很难用词组搜索标准来查找我要找的内容。对于初学者来说,我是一个编程/脚本编程的总手。运行Bash脚本,然后是关键字或变量

我得到的是理解如何使用脚本中的读取功能来创建来自用户输入的变量,这非常棒。我的问题是你可以运行一个脚本,后面跟一个关键字,这个关键字可以表示一个主机名(目标)设备。这看起来像这样。

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 [email protected]$devices 

expect "*assword:" 

send "$password\r" 

expect "#" 

log_user 1 

send "show int desc | in TRUNK\r" 

expect "#" 

send "exit\r" 

回答

1

有在bash这意味着投入到他们的论点特殊变量。你可以像这样指定它们:

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

如果你需要测试的正确数量的参数,你可以做一个简单的if语句:

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

然后在命令行中运行脚本像这样:

#!/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 
+0

非常感谢,这正是我一直在寻找的! :) –