首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在运行shell脚本时,我如何动态地更改主机?

在运行shell脚本时,我如何动态地更改主机?
EN

Stack Overflow用户
提问于 2016-03-22 09:25:15
回答 1查看 39关注 0票数 0

Shell脚本,我有两个不同的部分。

  1. 设置环境平台
  2. 用于在远程主机上安装包的脚本。

示例:

代码语言:javascript
运行
复制
#!/bin/bash
# Setting Environment Platform
init(){
    echo "Enter username of guest machine"
    read USERNAME    
    echo "Enter IP of guest machine"
    read GUEST_IP
    echo "Guest IP : $GUEST_IP"   
    echo "Guest Username $USERNAME"
    echo "running === ssh -l $USERNAME $GUEST_IP"
    if ssh -l $USERNAME $GUEST_IP; then
        install_packages
        echo SUCCESS
    else 
        retry_connection
        echo FAIL
    fi
}
# Scripts for package installation on remote host.
install_packages(){
    sudo apt-get -y update && apt-get -y upgrade
    sudo apt-get -y install aptitude
    sudo apt-get -y install default-jre
    sudo apt-get -y install default-jdk
}
retry_connection(){
    if ssh -l $USERNAME $GUEST_IP; then
        install_packages
        echo SUCCESS
    else 
        retry_connection
        echo FAIL
    fi
}

因此,在这第一部分init()应该运行在我的机器本身。在ssh连接成功后,install_packages()应该在init()中输入的来宾机器中运行。我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 09:43:08

您必须将函数定义传递到远程端,然后在那里调用它。要这样做,而不是调用install_packages,您可以这样做:

代码语言:javascript
运行
复制
ssh ${USERNAME}@${GUEST_IP} "$(typeset -f install_packages); install_packages;"

参考资料:Shell script: Run function from script over sshhttps://serverfault.com/questions/649359/executing-local-function-code-on-a-remote-server

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36150508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档