Ошибка при выполнении команды cassandra-cli в ssh
У меня есть два сервера A и B, у меня есть сценарий оболочки на сервере A, который регистрируется на сервере B (через 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;
Он работает правильно, когда я выполняю эти шаги вручную, но когда я автоматизирую этот процесс в сценарии оболочки, выполняя следующую строку:
serverA:~$ssh serverB "sh cassandra-cli -h <serverB> -v -f database_import.txt;"
Я получаю эту ошибку,
cassandra-cli: 46: cassandra-cli: -ea: not found
1 ответ
Решение
Итак, как вы уже отметили, $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