找回密码
 注册
关于网站域名变更的通知

为什么通过ganymed-ssh2连接linux,无法执行ll命令?

查看数: 394 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-9-22 13:52

正文摘要:

为什么通过ganymed-ssh2连接linux,无法执行ll命令? 2 Q% `* f) A3 l& t9 u0 p8 c4 c) y, P' D3 M5 I' J; d

回复

dapmood 发表于 2021-9-22 15:23

& w! Y% E. Z. F) i9 Xll 是在 ~/.bashrc 中定义的,是 ls -alF 命令的别名(alias),“通过ganymed-ssh2连接linux”时没有执行 ~/.bashrc吧
2 s" I  q/ T. W/ K3 h+ I
younicp 发表于 2021-9-22 15:22
NingW 发表于 2021-9-22 15:13
$ }) c# u" @3 I' B( qping通了吗
! X7 r% ?( Z+ q2 F
能到这一步,肯定是ping通了的吧
& r9 j1 q) Q* F
NingW 发表于 2021-9-22 15:13
ping通了吗

点评

能到这一步,肯定是ping通了的吧  详情 回复 发表于 2021-9-22 15:22
showmaker 发表于 2021-9-22 15:05
step 1 引入jar包
) q% c( l' {' N  W<dependency>
4 t: y  q3 Q9 C8 u( `$ `" A            <groupId>ch.ethz.ganymed</groupId>) k& k* e3 I! |9 ?- F7 H  Y
            <artifactId>ganymed-ssh2</artifactId>
5 ]0 a6 B7 o+ k6 u            <version>build210</version>( {* v. O+ G  y3 }, V# H2 y

5 ~5 P9 s% `+ J4 ^( ^</dependency>
. N( ~: \- a/ C
6 V* v1 M5 \. Xstep 2 代码1 O0 ]0 ^7 i7 w* A: f4 r& f

: ^2 ]5 _- j7 rimport java.io.BufferedReader;
% |1 Z& W$ C. }6 Y. q) l. [3 q9 }# Simport java.io.IOException;& u6 \  F4 Q( G3 M& e
import java.io.InputStream;
+ [0 U3 C7 @, Z- p: S' Timport java.io.InputStreamReader;
; V5 p( Z. m* @3 [& bimport java.io.UnsupportedEncodingException;
/ f5 q8 y/ M. p; G
  D$ o% O  r; c# N5 {) Y' ]//import org.apache.commons.lang.StringUtils;
$ i8 z0 Y# E. p( L8 O) T) G. E& H7 P" s3 o( _* F0 |5 ?5 Q
import ch.ethz.ssh2.Connection;
" |& P7 T* M4 e* f  \  Gimport ch.ethz.ssh2.Session;
9 ~+ n1 j8 p* D3 {& Rimport ch.ethz.ssh2.StreamGobbler;
& G1 U8 h# O% A* q& l$ {+ I
2 U; c* i# p& lpublic class MainCommand {7 @+ d- Q6 [- v$ E7 F, d
    private static String DEFAULTCHART = "UTF-8";; l& K2 k1 u' [: }$ U
  J+ a4 p) l9 b9 m
    private static Connection login(String ip, String username, String password) {( |. m2 D$ h1 G$ M% T6 _
        boolean flag = false;
. M) j. C# F! `4 u8 Y) n" Q        Connection connection = null;$ u# w! W* G2 e! d/ a; V# v
        try {
9 f% ?6 W- |$ e- T" N% Y            connection = new Connection(ip);  W2 A8 v; `7 L) X
            connection.connect();// 连接. l) G! J) h+ ]% d
            flag = connection.authenticateWithPassword(username, password);// 认证( @7 j( f  C2 Q$ w' N3 n  S) a
            if (flag) {
1 i' n  ?: [( z! ]                System.out.println("================登录成功==================");
7 N! b  X: T7 `2 q# g                return connection;
! B% @: H& D- R( b            }
+ q/ k$ {5 S' b7 Y        } catch (IOException e) {
7 h) z3 K0 y4 g0 [$ v, p            System.out.println("=========登录失败=========" + e);
6 _  e8 y$ e# K* }- S            connection.close();- h5 t5 |8 W" ^6 `2 O$ B
        }
' g- j. x9 Q& X        return connection;" ?2 v% e1 X. B7 _" w5 M
    }
1 V5 C5 W' {% J8 U2 a' I% z
5 U) `, s/ i' D( d0 }    /**
0 ~1 j0 L5 t4 x) F: T3 R; F     * 远程执行shll脚本或者命令
: m% S" a2 m0 ?& P0 j# ^     * 9 l, g6 u: ^9 a. u% R4 E2 T
     * @param cmd9 ~- e* p5 C3 [& F3 C% N2 l
     *            即将执行的命令( @* `# e$ j( T: @9 Q. Y# q0 o) ~* b
     * @return 命令执行完后返回的结果值
; p2 e; x- w2 E# f     */
/ B. d8 w9 Y/ E1 V$ v/ n( w/ S    private static String execmd(Connection connection, String cmd) {
& u% M6 L3 Y! x3 \; @6 y, I  h        String result = "";* U- O1 t7 Q* L
        try{8 D: G  S  @& t5 J* I
            if (connection != null) {
7 v7 G) B. H; m4 u                Session session = connection.openSession();// 打开一个会话
' E. X: J. H' C' [  V! V                session.execCommand(cmd);// 执行命令
5 j! T) W2 P/ Z! N/ J% j                result = processStdout(session.getStdout(), DEFAULTCHART);
9 Y& y  t9 E) p0 @5 ~                System.out.println(result);
" U: j2 W+ R" v# B                // 如果为得到标准输出为空,说明脚本执行出错了
' P( q' x! A8 I8 C                /*if (StringUtils.isBlank(result)) {! u3 l. N2 x5 h/ y' H, h
                    System.out.println("得到标准输出为空,链接conn:" + connection + ",执行的命令:" + cmd);5 ~) x: J4 j* ~" p) f5 x; a
                    result = processStdout(session.getStderr(), DEFAULTCHART);9 Y+ I, ~" f" r
                } else {4 p+ y1 n0 }4 k* ]$ C% s
                    System.out.println("执行命令成功,链接conn:" + connection + ",执行的命令:" + cmd);& S! z6 y" w! L" E% I8 f+ A' K
                }*/
. h6 L# M% u8 q' H6 {                connection.close();9 U6 A4 ^" }" {4 D& B2 [
                session.close();, L  Y7 j( ^7 d( t4 C% a8 H7 B/ E
            }
4 e; W" W  z$ K& ]) l# K        } catch (IOException e) {4 r) z4 X# _1 A! T7 z6 b# J
            System.out.println("执行命令失败,链接conn:" + connection + ",执行的命令:" + cmd + "  " + e);
$ x% W0 `* h% Z            e.printStackTrace();
1 J# H7 k5 Y% b% S6 Z$ ~4 t- x/ J        }# z6 b* P5 \# O( x2 J! p& U+ n. z* b
        return result;: t) t+ H, c0 [/ o% o
+ s+ z5 P+ u. W: r% f2 J4 }: H( H5 H
    }
7 o4 a) ~4 e7 g6 q' b( f& S# d6 r$ i# ~% k1 W  ~
    /**/ f6 g7 C' U2 }3 F1 b
     * 解析脚本执行返回的结果集
( p# ^3 q9 g# F8 _2 l     *
% j; e, C+ C: ^" Z) K; W     * @param in' \1 T! |; i, z4 p8 a0 |
     *            输入流对象
5 q+ D* @1 T+ e; }     * @param charset, \* u7 q6 S: }# k  V9 c
     *            编码1 Z3 J  i# V2 T0 ^; |, Y
     * @return 以纯文本的格式返回# j! N- e" l+ k
     */% m. k  \$ C; d2 C! I+ C
    private static String processStdout(InputStream in, String charset) {
) x5 o. m5 Y: r1 U7 p        InputStream stdout = new StreamGobbler(in);3 l; u2 @5 l! k  s/ |6 F" @
        StringBuffer buffer = new StringBuffer();7 G, E6 a6 E/ V, ^; E
        ;( a5 S' ^9 U( d( k0 B/ Z
        try {  H3 e& _' O' J* A% i
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout, charset));
6 w9 I8 R6 j4 U( `            String line = null;5 T8 @) `% r3 H% Q1 {3 J3 r& ]0 n
            while ((line = br.readLine()) != null) {# P) e# G( V  `0 z
                buffer.append(line + "\n");; c; M  ~: b& R  ]7 C8 k8 w2 ]: \
                System.out.println(line);. _; W8 y& m% H' g
            }
+ |/ X) Y8 O( Y3 ]1 D            br.close();
6 U# v5 u9 W* u        } catch (UnsupportedEncodingException e) {
+ O3 g, J8 f' @  l& x2 X  F            System.out.println("解析脚本出错:" + e.getMessage());
0 L6 u. @0 L1 W7 t+ T            e.printStackTrace();9 V) o9 i5 Y2 l
        } catch (IOException e) {
3 D* @, D1 d( |) D1 O, G            System.out.println("解析脚本出错:" + e.getMessage());
! w( l, V. b6 g) y            e.printStackTrace();* g. \1 j' o9 R9 P! C
        }) ^/ N/ g, M6 O* Q1 ?4 o3 J8 m, i
        return buffer.toString();. m; I- H6 o4 n5 X$ I2 u
    }& l( }$ ]: C+ v# g( J

5 x- j; I1 g, x, R- C8 Z( y    public static void main(String[] args) {
  ^+ T& w* o+ d/ F        long currentTimeMillis = System.currentTimeMillis();: T0 |3 L- H1 P
        String ip = "192.168.115.64";
/ b1 I  w% w0 n( Z, B        String username = "xfraud";
0 O5 `! J* J  `" C) V# Y6 S4 I        String password = "cfca1234";0 m. P. b4 K4 A% ^$ Q$ w
        String cmd = "uname -a";        % O. z/ j- m1 x& o" v9 p' A& t/ C. a2 j
        Connection connection = login(ip, username, password);
9 M2 P, A& M0 F        String execmd = execmd(connection, cmd);
9 k9 e2 _) h9 n! A( D4 u2 n        System.out.println(execmd);8 W, P' c4 _$ ]; d
        long currentTimeMillis1 = System.currentTimeMillis();, ~8 M& m' h; C: x: h
        System.out.println("ganymed-ssh2方式"+(currentTimeMillis1-currentTimeMillis));# k1 y& y7 g% ~. h0 [
    }+ D) }3 N3 a( r
}
+ }& u3 ?1 d$ S" O( G
关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 02:33 , Processed in 0.187500 second(s), 29 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表