亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

java實現linux連接操作

系統 2394 0

此程序需要ganymed-ssh2-build210.jar包。
下載地址: http://www.ganymed.ethz.ch/ssh2/
為了調試方便,可以將\ganymed-ssh2-build210\src下的代碼直接拷貝到我們的工程里,
此源碼的好處就是沒有依賴很多其他的包,拷貝過來干干凈凈。

此程序的目的是執行遠程機器上的Shell腳本。
遠程機器IP:***.**.**.***
用戶名:sshapp
密碼:sshapp
登錄后用pwd命令,顯示當前目錄為:/sshapp.
在/sshapp/myshell/目錄下有myTest.sh文件,內容如下:

public ? class ?RmtShellExecutor? {
????
????

????
private ?Connection?conn;
????

????
private ?String?????ip;
????

????
private ?String?????usr;
????

????
private ?String?????psword;
????
private ?String?????charset? = ?Charset.defaultCharset().toString();

????
private ? static ? final ? int ?TIME_OUT? = ? 1000 ? * ? 5 ? * ? 60 ;

????

????
public ?RmtShellExecutor(ShellParam?param)? {
????????
this .ip? = ?param.getIp();
????????
this .usr? = ?param.getUsername();
????????
this .psword? = ?param.getPassword();
????}


????

????
public ?RmtShellExecutor(String?ip,?String?usr,?String?ps)? {
????????
this .ip? = ?ip;
????????
this .usr? = ?usr;
????????
this .psword? = ?ps;
????}


????

????
private ? boolean ?login()? throws ?IOException? {
????????conn?
= ? new ?Connection(ip);
????????conn.connect();
????????
return ?conn.authenticateWithPassword(usr,?psword);
????}


????

????
public ? int ?exec(String?cmds)? throws ?Exception? {
????????InputStream?stdOut?
= ? null ;
????????InputStream?stdErr?
= ? null ;
????????String?outStr?
= ? "" ;
????????String?outErr?
= ? "" ;
????????
int ?ret? = ? - 1 ;
????????
try ? {
????????????
if ?(login())? {
????????????????
// ?Open?a?new?{@link?Session}?on?this?connection
????????????????Session?session? = ?conn.openSession();
????????????????
// ?Execute?a?command?on?the?remote?machine.
????????????????session.execCommand(cmds);
????????????????
????????????????stdOut?
= ? new ?StreamGobbler(session.getStdout());
????????????????outStr?
= ?processStream(stdOut,?charset);
????????????????
????????????????stdErr?
= ? new ?StreamGobbler(session.getStderr());
????????????????outErr?
= ?processStream(stdErr,?charset);
????????????????
????????????????session.waitForCondition(ChannelCondition.EXIT_STATUS,?TIME_OUT);
????????????????
????????????????System.out.println(
" outStr= " ? + ?outStr);
????????????????System.out.println(
" outErr= " ? + ?outErr);
????????????????
????????????????ret?
= ?session.getExitStatus();
????????????}
? else ? {
????????????????
throw ? new ?AppException( " 登錄遠程機器失敗 " ? + ?ip);? // ?自定義異常類?實現略
????????????}

????????}
? finally ? {
????????????
if ?(conn? != ? null )? {
????????????????conn.close();
????????????}

????????????IOUtils.closeQuietly(stdOut);
????????????IOUtils.closeQuietly(stdErr);
????????}

????????
return ?ret;
????}


????

????
private ?String?processStream(InputStream?in,?String?charset)? throws ?Exception? {
????????
byte []?buf? = ? new ? byte [ 1024 ];
????????StringBuilder sb?
= ? new ?StringBuilder();
????????
while ?(in.read(buf)? != ? - 1 )? {
????????????sb.append(
new ?String(buf,?charset));
????????}

????????
return ?sb.toString();
????}


????
public ? static ? void ?main(String?args[])? throws ?Exception? {
????????RmtShellExecutor?exe?
= ? new ?RmtShellExecutor( " ***.**.**.*** " ,? "ssh app " ,? "sshapp " );
????????
// ?執行myTest.sh?參數為java?Know?dummy
????????System.out.println(exe.exec( " sh?/webapp/myshell/myTest.sh?java?Know?dummy " ));
// ????????exe.exec("uname?-a?&&?date?&&?uptime?&&?who");
????}

}

?

注:一般情況下shell腳本正常執行完畢,getExitStatus方法返回0。
此方法通過遠程命令取得Exit Code/status。但并不是每個server設計時都會返回這個值,如果沒有則會返回null。
在調用getExitStatus時,要先調用WaitForCondition方法,通過ChannelCondition.java接口的定義可以看到每個條件的具體含義
在實際應用中,可以將outStr和outErr記錄到日志中,以便維護人員查看shell的執行情況,
而getExitStatus的返回值,可以認為是此次執行是否OK的標準。

?

java實現linux連接操作


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品视频6 | 250pp久久新 26uuu精品一区二区 | 国内精品视频在线播放一区 | 久久精品二区 | 亚洲精品久久九九热 | 日韩精品欧美一区二区三区 | 天天干人人干 | 四虎影视在线影院在线观看观看 | 久草视频在线网 | 天天操天天干天天摸 | 不卡在线视频 | 99热久久久久久久免费观看 | 四虎网站最新网址 | 亚洲香蕉网综合久久 | 亚洲成a人片在线观看www | 香蕉a视频| 国产国产精品四虎视频精品 | 四虎4hutv永久在线影院 | 国产亚洲99影院 | 黄色毛片a | 奇米影视久久 | 日韩毛片在线观看 | 国产精品一区视频 | 午夜一级成人 | 欧美成人鲁丝片在线观看 | 国产精品网站 夜色 | 精品一本久久中文字幕 | 亚洲精品国产男人的天堂 | 一级毛片观看 | 亚洲欧美日韩精品久久亚洲区 | 亚洲天码中文字幕第一页 | 国产综合图区 | 一级黄色毛片播放 | 欧洲成人爽视频在线观看 | 亚洲精品乱码久久久久久 | 国产精品人成 | 福利精品在线 | 三人性free孕交欧美 | 国产精品成人在线播放 | 337p亚洲精品色噜噜狠狠 | bbbb成人毛片免费看 |