【问题标题】:Shell Script: Passing Wrapper Parameters to Underlying ScriptShell 脚本:将包装器参数传递给底层脚本
【发布时间】:2012-07-31 09:53:42
【问题描述】:

我创建了一个包装器,它可以使用以下参数通过 SSH 执行给定脚本

sshwrapper.sh <server> <script with path> <username> <password>

现在我想调用以下脚本:

start.sh param1 param2 param3 param4

stop.sh param1 param2 param3

使用相同的包装器。

是否有可能有一种机制,在将基本参数传递给包装脚本后,我可以将剩余参数发布到底层脚本?

即我想实现以下符号:

例子:

sshwrapper.sh server start.sh username password param1 param2 param3 param4 

应该调用

start.sh param1 param2 param3 param4 

sshwrapper.sh server stop.sh username password param1 param2 param3 

应该调用

stop.sh param1 param2 param3 

以一般的方式。

【问题讨论】:

    标签: shell parameters


    【解决方案1】:

    使用shift"$@"

    SERVER="$1"
    SCRIPT="$2"
    USERNAME="$3"
    PASSWORD="$4"
    shift 4
    
    "$SCRIPT" "$@"
    

    例子:

    $ cat sshwrapper.sh 
    #!/bin/sh
    
    SERVER="$1"
    SCRIPT="$2"
    USERNAME="$3"
    PASSWORD="$4"
    shift 4
    
    echo "$SCRIPT" "$@"
    
    $ ./sshwrapper.sh server stop.sh username password param1 param2 param3 
    stop.sh param1 param2 param3
    

    使用shift,您可以从命令行中删除第一个参数并转移其余参数:

    $ set 1 2 3 4 5
    $ echo "$@"
    1 2 3 4 5
    $ shift 3
    $ echo "$@"
    4 5
    

    您在这里看到shift 3 删除了前三个参数。

    【讨论】:

    • 优秀...我认为我的问题描述不够清楚,但您确实给了我想要的东西。谢谢!!
    【解决方案2】:

    我以前使用 ssh 在远程服务器上执行脚本,但为了让我的生活更轻松,我设置了公钥身份验证以允许 无密码 访问。

    参考这篇文章

    http://macnugget.org/projects/publickeys/

    您可以使用命令行中的默认 ssh 工具执行带参数的远程脚本,如下所示

    $ ssh user@server "script.sh param1 param2 param3"
    

    多个命令可以执行如下

    $ ssh user@server "script1.sh param1 param2 param3; script2.sh param1 param2 param3"
    

    例如 - 登录到远程服务器并打印日期并获取正在运行的进程列表

    $ ssh user@server "echo date; ps -ef | grep hello"
    

    您可以将上述逻辑添加到您的脚本中,假设您想将其作为 ssh-wrapper 的一部分调用,或者直接从命令行执行。 p>

    只要确保在 ssh 部分使用 "双引号" 而不是 'single'

    【讨论】:

    • +1。提到用户名,密码只是为了显示包装器使用的一些参数。无论如何感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多