2017-03-15 76 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

相关问题