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

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條評論
主站蜘蛛池模板: 日韩在线一区二区三区 | 天天欲色成人综合网站 | 美美女高清毛片视频黄的一免费 | 精品综合久久久久久97超人该 | 香蕉视频在线观看网站 | 亚洲精品一区二区三区香蕉在线看 | 亚洲一区小说区中文字幕 | 久久久久久国产精品免费免费 | 成人精品一区二区不卡视频 | 日韩一区二区免费看 | 成人aaaa | 国产一久久香蕉国产线看观看 | 福利在线影院 | 国内自拍 在线播放 网红 | 看全大色黄大色黄大片一级爽 | 精品免费久久久久久成人影院 | 日本三级日本三级人妇三级四 | 又粗又大的机巴好爽视频视频 | 波多野吉衣一区二区三区在线观看 | 国产亚洲精品2021自在线 | 久久国产乱子伦精品免费一 | 成人夜色视频网站在线观看 | 啪啪综合网 | 综合色亚洲 | 欧美成人另类69 | 日韩亚洲第一页 | 久久精品亚瑟全部免费观看 | 求毛片 | 久久夜夜 | 中文字幕视频在线免费观看 | 99re这里有精品 | 成人一区二区免费中文字幕 | 无遮挡无遮挡91桃色在线观看 | 操免费视频 | 911精品国产91久久久久 | 色综合伊人色综合网亚洲欧洲 | a在线观看免费 | 亚洲国产成人精品91久久久 | 九九亚洲精品自拍 | 播五月综合| 久久亚洲国产最新网站 |