`
山雨欲来风满楼
  • 浏览: 58032 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby net ssh 应用中碰到一个奇怪问题

    博客分类:
  • ruby
ssh 
阅读更多
发现ruby ssh后, 欣喜了一阵子, 但是使用后发现一个问题, 就是有些命令执行的时候和手工执行的时候效果不一样。

简单的命令, 如pwd, ls -l是没有问题的, 能够正确得到结果。
但是如果是运行shell脚本, 或者 cd  命令,就会失败, 很奇怪吧, 不知道诸位是如何解决的?

puts  Net::SSH::Version::CURRENT
  ssh=Net::SSH.start(board["ip"], board["root_username"], :password => board["root_password"],:config => true,:port=> 22)
puts DateTime.now
   result=ssh.exec! "export PATH=$PATH:/bin:/usr/bin:/usr/sbin:/sbin"
   puts resul
puts "start to echo lib path"
  result=ssh.exec! "echo $LD_LIBRARY_PATH"
  puts result

#result=ssh.exec!("/usr/app/bin/apdiag")
result=ssh.exec("/usr/app/bin/apdiag")
  puts result
   result=ssh.exec! "pwd"
  puts result


运行结果如下:

nil

start to echo lib path



#<Net::SSH::Connection::Channel:0x2926d6c>

/home/root

/usr/app/bin/apdiag: error while loading shared libraries: libmem.so: cannot open shared object file: No such file or directory

2009-06-05T14:24:34+08:00

total 336

drwxr-xr-x 6 7983   82   1024 Jun  4 08:33 build

-rw------- 1 root root 337920 Jun  4 08:29 build.tar

很奇怪啊

分享到:
评论
4 楼 Magicloud 2009-11-05  
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.
3 楼 jhsea3do 2009-06-05  
你用ssh的话还是证书验证比较好,而且不要用root执行
我没有用过Net::SSH,我用过ant做过类似的东西
一般我会将每次要执行的所有任务集中到一个脚本内。

举个例子,备份oracle数据库上某个表,然后tar成一个压缩包再拷贝到本地。

我会在服务器上建立一个shell ~/rmt/bin/ora.dump.sh

#!/bin/sh
# script: ~/rmt/bin/ora.dump.sh
export APP_HOME=${HOME}/rmt
source ${HOME}/.bashrc.oracle.env
/usr/bin/ruby ${APP_HOME}/ruby/ora.dump.rb
exit



# script: ~/.bashrc.oracle.env
export ORACLE_HOME=/path/to/oracle_home
export ORACLE_SID=sms
export NLS_LANG=american_america.ZHS16GBK
export PATH=${ORACLE_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}




#!/usr/bin/env ruby
# script: ~/rmt/ruby/ora.dump.rb
tmp="#{ENV['APP_HOME']}/tmp"
exp="#{ENV['ORACLE_HOME']}/bin/exp"
conn="user/pass"
table="my_table"
cmd="#{exp} #{conn} tables=#{table} file=#{tmp}/#{table}.dmp log=#{tmp}/#{table}.log"
exec=`#{cmd}`
tar="tar czvf #{tmp}/#{table}.tgz #{tmp}/#{table}.*"
2 楼 山雨欲来风满楼 2009-06-05  
普通的CD 命令是通过 cd path;ls-l才能列出当前目录, 运行完后还是回到HOME目录, 也没有办法,可能和ruby 块操作有关? 瞎猜
1 楼 山雨欲来风满楼 2009-06-05  
发现是PATH问题, 自动的远程登录shell环境变量 和手动登录 居然不一样。

1、设定服务端
修改/etc/ssh/sshd_config文件,增加:
引用
PermitUserEnvironment yes

2. 重启服务
service sshd restart

3.
add path into /etc/environment (或者 .ssh下)
chmod 600 environment

相关推荐

    net-ssh远程访问linux ruby

    Net::SSH是Ruby的一个开源库,它提供了SSH2协议的实现,允许开发者通过SSH协议安全地执行命令、传输文件等操作在远程Linux服务器上。 在Ruby中,Net::SSH库使得远程系统管理变得更加便捷。使用这个库,你可以执行...

    ruby ssh备份远程服务器脚本

    ruby ssh备份远程服务器脚本,主要是学习net/scp这个模块

    Ruby-用来管理SSH的Puppet模块

    本模块是专门为使用Ruby编写的Puppet模块,用于管理SSH(Secure Shell),一个用于在不同系统间安全远程登录的网络协议。 SSH模块在Puppet生态系统中扮演着重要角色,因为它可以帮助自动化和标准化SSH服务器的配置...

    net-ssh:SSH(协议2)客户端的纯Ruby实现

    Net :: SSH是SSH2客户端协议的纯Ruby实现。 它允许您编写通过SSH2调用远程服务器上的进程并与之交互的程序。 特征: 在远程服务器上执行进程并捕获其输出 通过单个SSH连接并行运行多个进程 支持SSH子系统 通过SSH...

    Ruby-Raven是Sentry的一个Ruby客户端

    Sentry是一个开源的、自我托管的日志和错误管理平台,用于实时监控和追踪应用中的异常情况,帮助开发者快速定位并修复问题。Raven库为Ruby开发者提供了一个方便的接口,将应用程序中的错误报告给Sentry服务器。 在...

    ruby代码分享——excel应用

    这相当于在Ruby中打开一个Excel程序,并且可以控制其行为。 ```ruby excel = WIN32OLE::new('excel.application') ``` #### 3. 打开现有工作簿 可以通过`Workbook`类的`Open`方法来打开一个已经存在的Excel工作簿...

    Ruby-Configatron一个超级酷简单功能丰富的Ruby应用程序的配置系统

    Configatron就是一个为解决这一问题而设计的库,它提供了一个简单易用且功能丰富的框架,使得Ruby应用程序的配置工作变得轻松高效。 Configatron的核心理念是提供一个简洁的API,让开发者能够快速地定义和访问应用...

    Ruby-一个Ruby的例子

    在压缩包`RubyDemo_First-master`中,我们可以假设这是一个简单的Ruby项目,可能包含一个或多个Ruby文件(`.rb`),这些文件可能包含各种示例代码,比如控制台应用、基础的数据结构操作、面向对象编程示例等。...

    Ruby-Mutations用于编写安全可重用和可维护的代码Ruby和Rails应用程序

    总之,Ruby-Mutations是提升Ruby和Rails应用测试质量的一个强大工具,它可以帮助开发者编写出更健壮、更可靠的代码,通过揭示测试的弱点来增强测试覆盖率,最终使你的应用程序变得更加安全、稳定和易于维护。

    Ruby-Logging一个用在Ruby程序中灵活日志库

    Ruby-Logging库是一个在Ruby编程语言中广泛使用的日志处理工具,它借鉴了Java的log4j库的设计理念,提供了一种灵活、可扩展的方式来记录应用程序的运行信息。这个库的核心目标是帮助开发者轻松地控制日志输出的级别...

    [转] ruby学习一个综合小练习

    标题中的“ruby学习一个综合小练习”表明这是一个关于Ruby编程语言的学习资源,可能是通过一个实际的小项目或练习来帮助学习者提升对Ruby的理解。描述中提到的“博文链接”指向了一个特定的博客文章,虽然没有给出...

    ruby中英文api

    Rails框架是Ruby的一个重要应用,它是一个基于MVC(模型-视图-控制器)架构的Web开发框架,简化了Web应用的开发过程。学习Rails API,需要了解路由、控制器、模型、视图、ActiveRecord ORM(对象关系映射)以及Rails...

    Ruby 应用安装程序制作工具 Ocra.zip

    Ocra,全称为"One-Click Ruby Application",是专门为Ruby开发者设计的一个工具,它允许用户将Ruby源代码打包成独立的可执行文件,使得在没有Ruby环境的Windows系统上也能运行Ruby应用程序。这一特性对于分发和部署...

    Cloud Foundry中Ruby的应用

    总之,Cloud Foundry为Ruby开发者提供了一个强大而灵活的平台,不仅简化了应用的部署和管理,还促进了开发效率的提升和社区资源的共享。对于希望利用Ruby进行高效云应用开发的团队和个人而言,Cloud Foundry无疑是一...

    ruby中文文档中心资料

    在"testwww"这个文件名中,"test"可能是一个示例项目或者测试用例,而"www"可能暗示这是一个与Web相关的应用。在Ruby中,Web开发最知名的框架是Ruby on Rails,它遵循MVC(模型-视图-控制器)架构模式,简化了Web...

    Ruby+on+Rails快速Web应用开发实战.pdf

    - **MySQL的介绍和安装**:文档提到了MySQL数据库,这是Rails应用中常用的一个关系型数据库管理系统。介绍了MySQL的下载地址`***`。 - **数据库配置**:在Rails中,数据库的配置通常涉及模型的生成,以及在配置文件...

    Ruby-Firehose构建实时Rubyweb应用程序

    Ruby-Firehose是用于构建实时Web应用程序的一个框架,它充分利用了WebSocket技术,为开发者提供了一种高效且灵活的方式来实现实时数据传输。在本文中,我们将深入探讨Ruby-Firehose的核心概念、工作原理以及如何在...

    Ruby-CassandraDriverApacheCassandra的一个纯Ruby驱动器

    标题中的“Ruby-CassandraDriver”指的是一个专门为Apache Cassandra设计的Ruby编程语言的客户端库。Apache Cassandra是一个分布式的、高可用的、面向列的NoSQL数据库系统,常用于处理大规模的数据存储和检索。Ruby-...

    Ruby-Puma一个Ruby的并发Web服务器

    Ruby-Puma是一个高性能、轻量级且并发的Web服务器,专为Ruby编程语言设计。它在Ruby社区中广泛用于构建Web应用程序,特别是与Rails框架一起使用。Puma的设计目标是提供稳定、快速和易于管理的服务,同时保持低内存...

    Ruby-LazyHighCharts一个简单和非常灵活的方式从ruby代码使用HighCharts

    总的来说,Ruby-LazyHighCharts为Ruby开发者提供了一个强大且易于使用的工具,使他们能够便捷地将HighCharts的功能整合到自己的应用中,无论是在动态的Web应用还是静态的站点中,都能实现高效的数据可视化。...

Global site tag (gtag.js) - Google Analytics