0

サーバーAとBの2つのサーバーがあり、サーバーAに(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;

これらの手順を手動で実行すると正しく動作しますが、次の行でシェル スクリプトでこのプロセスを自動化すると、次のようになります。

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

したがって、すでに指摘したように、$JAVAssh 経由では空です。

これは.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 に答える