我有两台服务器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
答案 0 :(得分: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