使用 ruby net/ssh connection openssh 的两个问题

使用 ruby net/ssh connection openssh 的两个问题
  Large |  Medium |  Small   
18:27 ,  vkill
环境:ruby 1.8.7、net/ssh 2.0.22、openssh 5.4、archlinux 2.6.32 
问题1:PATH的问题,导致我们无法执行一些命令
现象:
我们net/ssh connection openssh后 exec!('echo $PATH') 返回的是 /usr/bin:/bin:/usr/sbin:/sbin
原因:
net/ssh 是 "user@notty" ,而 xshell这些 是 "user@pts/x"
这点我们可以通过 'ps aux|grep sshd' 来实时查看
查看后发现 xshell 认证后是 sshd: root@pts/0 ,而net/ssh 认证后是 sshd: [accepted]
[2010.6.4 19:00更新] 我把net/ssh用到rails中的时候,rails启动后是 sshd: root@notty,这个还真没想到能看到
引用一段说明
Quotation

//原文参见 http://www.iteye.com/topic/402750
Ruby ssh only provide the "SSH" function, not term login. 
If you check, you will see that the connection from ruby ssh is "user@notty", not like ssh command ("user@pts/x"). 
You have to do more to make an environment like manual login.

解决方法:

[root@vkill ~]# vi /etc/ssh/sshd_config
//添加这行
PermitUserEnvironment yes
[root@vkill ~]# vi ~/.ssh/environment
//添加类似这行,文件内容格式参见 /etc/environment
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/ruby-enterprise-1.8.7-2010.01/bin:/usr/local/bin:/usr/local/sbin
[root@vkill ~]# /etc/rc.d/sshd restart

结果:
现在再去 net/ssh 后看 $PATH 就是~/.ssh/environment中设置的了

问题2:工作目录的问题
现象:
shell下先后执行 'cd /var' 和 'pwd' 命令,当前工作目录就是 /var 了,而 net/ssh 则还是 ~
解决方法:
两个命令一起执行,即net/ssh connection openssh后 exec!('cd /var ;pwd') 则显示 /var 
Last modified by vkill on2010/06/04 19:01
类别: ruby & rails | Tags:  原创 ,  学习笔记 ,  net/ssh ,  ssh ,  协议 | 1 条评论, 889 次阅读
网友评论(1):
CharlesCui
2010/06/12 11:05
这个问题我整好今天也碰到了,也是采用cd命令和其它命令写在一起,然后让Net::SSH的exec!函数一起调用.但还有一个问题没有解决就是:当Net::SSH访问rpc.rstatd这个命令的时候Ruby会被阻塞住,远程主机也没有执行rpc.rstatd命令,sess.exec!("rpc.rstatd")我还没有搞明白什么原因导致,估计是rpc.rstatd命令自身问题.
vkill replied on 2010/06/13 23:17
你好,我用 archlinux 的,还没用过 rpc.rstatd ,你用本地执行下 rpc.rstatd 看看是不是要需要输入啥,我试 'passwd user' 的时候也一直组塞住,后来发现输入不是在 stdout 中,而是在 stderr 中,具体啥情况看看这篇 http://blog.vkill.net/read.php/157.htm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值