Shell脚本:通过ssh从脚本运行功能

爱德华先生

是否有任何聪明的方法可以通过ssh在远程主机上运行本地Bash功能?

例如:

#!/bin/bash
#Definition of the function
f () {  ls -l; }

#I want to use the function locally
f

#Execution of the function on the remote machine.
ssh user@host f

#Reuse of the same function on another machine.
ssh user@host2 f

是的,我知道这行不通,但是有办法实现吗?

Alvits

您可以使用该typeset命令通过来使功能在远程计算机上可用ssh有多个选项,具体取决于您要如何运行远程脚本。

#!/bin/bash
# Define your function
myfn () {  ls -l; }

要在远程主机上使用该功能:

typeset -f myfn | ssh user@host "$(cat); myfn"
typeset -f myfn | ssh user@host2 "$(cat); myfn"

更好的是,为什么还要麻烦管道:

ssh user@host "$(typeset -f myfn); myfn"

或者,您可以使用HEREDOC:

ssh user@host << EOF
    $(typeset -f myfn)
    myfn
EOF

如果要发送脚本中定义的所有函数,而不仅仅是发送myfn,请typeset -f像这样使用

ssh user@host "$(typeset -f); myfn"

说明

typeset -f myfn将显示的定义myfn

cat将以文本形式接收该函数的定义,$()并将在当前的shell中执行它,该shell将成为远程shell中的已定义函数。最后,该功能可以执行。

最后的代码将在ssh执行之前将函数的定义内联。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Shell脚本从ssh命令运行节点文件

来自分类Dev

通过网站运行Shell脚本

来自分类Dev

通过网站运行Shell脚本

来自分类Dev

通过shell脚本运行hbase shell命令

来自分类Dev

在功能Shell脚本中运行命令

来自分类Dev

无法使用SSH运行Shell脚本

来自分类Dev

Shell通过ssh脚本化远程命令

来自分类Dev

停止通过SSH运行远程脚本

来自分类Dev

继续通过ssh运行脚本

来自分类Dev

通过 SSH 在 Android 上运行 python 脚本

来自分类Dev

如何通过终端运行Shell脚本

来自分类Dev

如何通过Apache Airflow运行Shell脚本

来自分类Dev

如何通过终端运行Shell脚本

来自分类Dev

如何通过双击运行Shell脚本?

来自分类Dev

通过 Unix shell 脚本运行 R 程序

来自分类Dev

如何通过SSH在远程主机上运行本地(非Shell)脚本?

来自分类Dev

如何通过SSH在远程服务器上运行本地Shell脚本?

来自分类Dev

如何通过SSH在远程主机上运行本地(非Shell)脚本?

来自分类Dev

如何通过SSH在远程服务器上运行本地Shell脚本?

来自分类Dev

如何在 shell 脚本中通过 SSH 运行函数和本地资源

来自分类Dev

通过Fabric运行要运行后台运行命令的shell脚本

来自分类Dev

从shell脚本运行c脚本

来自分类Dev

从shell脚本运行c脚本

来自分类Dev

Shell脚本功能问题

来自分类Dev

Shell脚本功能问题

来自分类Dev

Unix Shell脚本功能

来自分类Dev

Shell脚本交互功能

来自分类Dev

Shell脚本开关功能

来自分类Dev

如何在一台机器上通过带有资源(.txt文件)的ssh在ssh上运行Shell脚本?