0

我有两台服务器 A 和 B,我在 serverA 中有一个 shell 脚本,它登录到 serverB(通过 ssh)并运行以下命令:

sh cassandra-cli -h <serverB> -v -f database_import.txt;

因此,当我手动执行此操作时,我会按照以下步骤操作:

serverA:~$ ssh serverB
serverB:~$ sh cassandra-cli -h <serverB> -v -f database_import.txt;

当我手动执行这些步骤时它可以正常工作,但是当我通过以下行在 shell 脚本中自动执行此过程时:

serverA:~$ssh serverB "sh cassandra-cli -h <serverB> -v -f database_import.txt;"

我得到这个错误,

cassandra-cli: 46: cassandra-cli: -ea: not found
4

1 回答 1

2

因此,正如您已经指出的那样,$JAVA通过 ssh 是空的。

这是因为.bashrc在您使用ssh. 您可以像这样获取它:

. ~/.bashrc

您的命令将如下所示:

ssh serverB ". ~/.bashrc; sh cassandra-cli -h <serverB> -v -f database_import.txt;"

您也可以尝试将其放入您的.bash_profile中,而不是每次都手动调用它。

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
于 2013-08-22T05:15:02.023 回答