Ошибка при выполнении команды 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
Другие вопросы по тегам