免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5384 | 回复: 7
打印 上一主题 下一主题

求救=>Net::SSH::Perl使用问题-无法使用远端环境变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-29 17:32 |只看该作者 |倒序浏览

$connect = new Net::SSH:erl(
        "192.168.*.*",
        port => "22",
                   protocol => '2,1',
        options => [
            'BatchMode yes',
            'RSAAuthentication no',
            'PubkeyAuthentication no',
            'NumberOfPasswordPrompts 1',
            'ChallengeResponseAuthentication no',
            'PasswordAuthentication yes',
            'UserKnownHostsFile /dev/null',
        ],
         );
$connect->login("****", "****";
($value, $err_msg, $exit_code) = $connect->cmd("cat \$ORACLE_HOME/network/admin/sqlnet.ora | grep -i AUTHENTICATION_SERVICES";

代码如上,但是总是报错:cat: /network/admin/sqlnet.ora: No such file or directory

但是如果不使用ssh,而是直接在设备上跑qx{cat \$ORACLE_HOME/network/admin/sqlnet.ora | grep -i AUTHENTICATION_SERVICES},则没有问题

有人知道这是为什么吗?

难道ssh不支持参数传递?

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
2 [报告]
发表于 2013-08-29 20:18 |只看该作者
读一下sshd的说明,或者baidu ssh 环境变量
ssh的环境变量要在.ssh目录下面单独设置的

论坛徽章:
5
卯兔
日期:2013-09-04 21:31:16寅虎
日期:2013-09-08 11:37:13丑牛
日期:2013-09-20 19:32:08技术图书徽章
日期:2013-09-22 14:39:06双子座
日期:2013-10-01 17:59:26
3 [报告]
发表于 2013-08-29 21:01 |只看该作者
本帖最后由 小牛开刀 于 2013-08-29 21:05 编辑

回复 1# jinwh12


没用过 Net::SSH, 我用的是 Net::OpenSSH,

我不知道别人怎么解决的, 我是先 source /etc/profile 或其他环境变量, 例如:

  1.     if ( $wnat_to_do eq 1 ) {
  2.         if ( m/$tomcat_no_run/ ) {
  3.             chomp ( $cmd_start  = "source /etc/profile && $black_cat[$#black_cat]" );
  4.             chomp ( $cmd_start .= "$path_tail" );
  5.         } else {
  6.             print "$black_cat[0] $black_cat[1] already running!\n";
  7.             $check_status = '1';
  8.         }
  9.     } elsif ( $wnat_to_do eq 2 ) {
  10.        ......
  11.     }
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-09-06 11:16 |只看该作者
我把远端设备上的ssh配置做了如下修改:
PermitUserEnvironment yes
service sshd restart

但是仍然无法正确执行:
$ssh=new Net::SSH:erl(........);
($value, $err_msg, $exit_code) = $ssh->cmd("cat \$ORACLE_HOME/network/admin/sqlnet.ora  | grep -i encryption";

但是如果我使用Net::SSH::Expect模块,调用命令:
$ssh->exec("\$ORACLE_HOME/bin/sqlplus / as sysdba";

这时,在远端执行该命令时,$ORACLE_HOME 就可以正确被远端设备获取到其变量值

但是不想使用Net::SSH::Expect,感觉waitfor匹配慢。


论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
5 [报告]
发表于 2013-09-06 14:50 |只看该作者
你配置envirionment文件了吗?
或者,你就source一下啊
. $HOME/.bash_profile;cat .........

论坛徽章:
0
6 [报告]
发表于 2013-09-06 15:54 |只看该作者
应该不是环境变量的问题,远端设备有环境变量的;用expect或者telnet方式都可以获取到,就是用ssh::perl的那个cmd调用时获取不到

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
7 [报告]
发表于 2013-09-06 16:05 |只看该作者
expect和telnet当然是可以得到的,因为它们都是要登录的.
只有ssh 远程执行命令是特殊的.
算了...LZ你自己想怎样就是怎样吧

论坛徽章:
5
卯兔
日期:2013-09-04 21:31:16寅虎
日期:2013-09-08 11:37:13丑牛
日期:2013-09-20 19:32:08技术图书徽章
日期:2013-09-22 14:39:06双子座
日期:2013-10-01 17:59:26
8 [报告]
发表于 2013-09-06 17:47 |只看该作者
回复 4# jinwh12


    你试试:
  1. "source /etc/profile && cat \$ORACLE_HOME/network/admin/sqlnet.ora  | grep -i encryption"
复制代码
或者
  1. "source /home/oracle/.bashrc && cat \$ORACLE_HOME/network/admin/sqlnet.ora  | grep -i encryption"
复制代码
先 source 一下环境变量.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP