2017-03-15 22 views
2

我想在bash下使用ssh在遠程服務器上運行命令,而默認會話是csh。在SSH上運行遠程Linux服務器上的命令時BASH而不是CSH

小例子,(真正的命令更復雜,是由我的IDE遠程調試器生成):

ssh hostname 'ls | head' 

我沒有管理員權限。試圖chsh -s /bin/bash結果與錯誤chsh: cannot lock /etc/passwd; try again later.

我嘗試添加到的.cshrc以下

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

但它凍結通過SSH發送命令時,控制檯(同時要定期SSH作品)

任何想法如何解決這個問題?

注意:我必須有一個配置主機的解決方案,因爲我無法訪問由我的IDE的調試器自動生成的ssh命令。在IDE上,我只能設置主機名和端口號。 (編輯),所以,像ssh hostname '/bin/bash -c "ls | head"'解決方案不會適用

EDIT2:通過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/ 

我不知道爲什麼,但在啓用慶典它工作的服務器,而在csh主機上失敗。

謝謝!

+0

請添加正在發送的實際命令(明顯擦除所有敏感信息)。 – bishop

+0

@bishop,相應編輯 – yuval

+0

如果您無權使用'chsh',則無法更改使用的默認shell。如果你不能在命令中加入'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

相關問題