2017-03-15 14 views
2

私のデフォルトセッションがcshである間に、bashの下でsshを使用してリモートサーバでコマンドを実行したいとします。SSH経由でリモートLinuxサーバ上でコマンドを実行しているときにCSHの代わりにBASH

最小限の例(真のコマンドは、より複雑で、私のIDEリモートデバッガによって生成される):

ssh hostname 'ls | head' 

私は、管理者権限を持っていません。どのように私は、次の

setenv SHELL /bin/bash 
exec /bin/bash --login 

を.cshrcに追加しようとしたが、SSHを介してコマンドを送信する際には、コンソールがフリーズエラーchsh: cannot lock /etc/passwd; try again later.

chsh -s /bin/bash結果(通常のsshの作品中)

任意のアイデアをしようとそれを解決するには?

注:IDEのデバッガで自動的に生成されるsshコマンドにアクセスできないため、ホストを構成するソリューションが必要です。 IDE上では、ホスト名とポート番号のみを設定できます。 IDEによって示さ 実際のコマンド(再び、私はそれを編集することはできません):

ssh://[email protected]:2213/home/lab/username/anaconda2/envs/tf_011b/bin/python -u /specific/a/home/cc/cs/username/.pycharm_helpers/pydev/pydevd.py --multiproc --qt-support --client '0.0.0.0' --port 41823 --file /home/lab/username/remote_py/nlteach/show_attend_and_tell/train_saat_classifier.py --train_dir=/home/lab/username/nlteach/output/train/d=cub/imSD=11%imSP=rnd%tcSP=cvpr16/CSat/res50%lr0_02LrDTexpLrDc0_938OrmspWDc0/emb=512%ldTrn=0%nU=512%noHid=1%lr=0_02%lrDT=fix%lrDc=1%o=rmsp/ 

私がなぜわからないが、bashの上で有効(EDIT)したがってssh hostname '/bin/bash -c "ls | head"'のようなソリューションは、文句を言わない

EDIT2を適用しますそれがcshホスト上で失敗する間、それは動作します。

ありがとうございます!

+0

送信された実際のコマンドを追加してください(機密情報をはっきりとスクラブしてください)。 – bishop

+0

@bishop、それに応じて編集されます – yuval

+0

'chsh'を使用する権限がない場合、使用されているデフォルトのシェルを変更する方法はありません。あなたがコマンドに '' bash -c ''を置くことができないなら、あなたは嫌な思いをするでしょう。 – Barmar

答えて

1

リモート側で起動bash、実行するコマンド何それを伝える:

ssh hostname '/bin/bash -c "ls | head"' 

コマンドが(理由はエスケープ引用符の例)複雑すぎる場合は、スクリプトにあなたのコマンドを記述し、コピースクリプトを実行し、スクリプトを実行してください:

scp script.bash hostname:/tmp/ 
ssh hostname '/bin/bash /tmp/script.bash' 
+0

ありがとうございます。私のボトムノートを見てください。私はクライアントから送られたコマンドを操作するためのアクセス権がありません – yuval

関連する問題