[英]Can I call a local function from ssh?
我知道我可以在 SSH session 中调用本地 shell 的变量,所以我假设我也可以通过这种方式调用 function。 但这似乎不起作用。
我有一个脚本来检查我的本地机器是否可以处理某些操作,如果可以,我需要调用本地函数,如果本地机器不能,我需要 SSH 进入远程机器并调用本地函数。
canHandle() {
if [ -d /this_must_exist/ ]
then
return 0
else
return 1
fi
}
localFunction() {
// Predefined tasks
}
canHandle
if [ $? -eq 0 ]
then
// Process locally using predefined functions
localFunction
else
ssh -t me@server << ENDSSH
// Process remotely calling predefined local functions
localFunction
ENDSSH
fi
Imho这不起作用。
本地变量在本地Shell上展开,并且已扩展传输。
您可以编写一个与本地函数相同的bash脚本,并编写一个函数将其通过scp复制到远程系统,然后通过shh执行,然后删除它。
您可以像这样在远程机器myhost
上声明并运行本地定义的 Bash function greet
:
greet() { echo "Hello, $1"; }
ssh myhost "$(declare -f greet); greet 'friend'"
Bash 内置declare -f
打印传递的 function 的源代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.