Shell脚本,我有两个不同的部分。
示例:
#!/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()中输入的来宾机器中运行。我该怎么做呢?
发布于 2016-03-22 09:43:08
您必须将函数定义传递到远程端,然后在那里调用它。要这样做,而不是调用install_packages,您可以这样做:
ssh ${USERNAME}@${GUEST_IP} "$(typeset -f install_packages); install_packages;"参考资料:Shell script: Run function from script over ssh,https://serverfault.com/questions/649359/executing-local-function-code-on-a-remote-server
https://stackoverflow.com/questions/36150508
复制相似问题