繁体   English   中英

我可以从 ssh 拨打本地电话 function 吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM