在ssh中执行cassandra cli命令时出错



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

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

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

这是因为当您使用ssh登录时,.bashrc不是来源。你可以这样来源:

. ~/.bashrc

你的命令看起来是这样的:

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

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

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

最新更新