通过SSH

时间:2017-03-15 15:56:24

标签: bash ssh csh

我想在bash下使用ssh在远程服务器上运行命令,而我的默认会话是csh。

最小示例(true命令更复杂,由我的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://username@localhost: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的服务器上它可以工作,而在csh主机上失败。

谢谢!

1 个答案:

答案 0 :(得分:1)

在远程端调用bash,告诉它要运行什么命令:

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

如果命令太复杂(例如因为引号转义),则将命令写入脚本,复制脚本,然后运行脚本:

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