【问题标题】:executing method on remote machine with sshpass shell script使用 sshpass shell 脚本在远程机器上执行方法
【发布时间】:2017-06-09 00:01:28
【问题描述】:

如何在使用 sshpass 连接的远程机器上执行方法 以下是代码:

#!/bin/bash
checkfunctioncall() {
cd "/home/user"
mkdir "remotecalltest"

}

sshpass -p "$serverpwd" ssh "$serveruser"@"$serverip" checkfunctioncall

但我遇到以下错误:

bash: checkfunctioncall: 找不到命令

请推荐

我正在寻找使用 sshpass 的解决方案,因为我需要使用密码登录到远程服务器

【问题讨论】:

  • @Andrew:不,不是,我已经看过这篇文章了,但我特意在寻找使用 sshpass 的解决方案,因为我需要使用密码登录到远程服务器
  • 你不能执行本地定义的函数,因为远程机器对此一无所知。编写你要运行的脚本,复制到远程机器上然后运行。

标签: bash shell scripting


【解决方案1】:

我认为这将消除上述错误。

sshpass -p "$serverpwd" ssh "$serveruser"@"$serverip" << EOSSH
checkfunctioncall(){
cd "/home/user"
mkdir "remotecalltest"
}
checkfunctioncall
EOSSH

【讨论】:

  • 如果我想从这个函数调用另一个函数怎么办(这也需要在远程服务器上执行);它再次给出同样的错误
  • 在脚本函数中设置正确的 PATH 变量或将其设置为命令本身。
  • @vtha 对我来说有效。没有给出 PATH 变量。
最近更新 更多