1、知道怎麼在本機上用java 代碼刪除伺服器上的文件?
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
/**
* 利用apache net 開源包,使用telnet方式獲取AIX主機信息
* @version 1.2
*/
public class NetTelnet {
// Telnet對象
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
// 提示符。具體請telnet到AIX主機查看
private char prompt = '#';
// telnet埠
private String port;
// 用戶
private String user;
// 密碼
private String password;
// IP地址
private String ip;
public NetTelnet() {
try {
// AIX主機IP
this.ip = "219.243.12.10";
this.password = "05933663007";
this.user = "administrator";
this.port = "23";
telnet.connect(ip, Integer.parseInt(port));
System.out.println("開始獲取輸入流...");
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 登錄
/* readUntil("login: ");
write(user);
readUntil("Password: ");
write(password);
readUntil(prompt + " ");*/
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 讀取分析結果
*
* @param pattern
* @return
*/
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char ch = (char) in.read();
while (true) {
sb.append(ch);
if (ch == lastChar) {
if (sb.toString().endsWith(pattern)) {
return sb.toString();
}
}
ch = (char) in.read();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 寫
*
* @param value
*/
public void write(String value) {
try {
out.println(value);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向目標發送命令字元串
*
* @param command
* @return
*/
public String sendCommand(String command) {
try {
write(command);// 執行刪除的命令 rm -rf *.*
return readUntil(prompt + " ");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 關閉連接
*
*/
public void disconnect() {
try {
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
System.out.println("開始執行telnet......");
NetTelnet telnet = new NetTelnet();
// 通過aix的命令「查找主機名稱」獲取數據
// 命令是 "hostname"
// 不熟悉命令的參考<<AIX網路管理手冊>>
System.out.println("開始發送hostname命令");
String result = telnet.sendCommand("hostname");
System.out.println("顯示結果");
System.out.println(result);
// 最後一定要關閉
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2、高分求教:有一台Linux伺服器,請教怎麼通過JAVA編程通過telnet自動登錄伺服器並執行某個shell命令
如果你本身是windows系統的話
用vbs簡單多了
3、利用java來telnet到某個伺服器的程序運行不了,如何修改?
您好,您這樣:
package place.in.javaeye;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
public class Shell
{
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';// 普通用戶結束
public Shell(String ip, int port, String user, String password)
{
try
{
telnet.connect(ip, port);
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 根據root用戶設置結束符
this.prompt = user.equals("root") ? '#' : '>';
login(user, password);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 登錄
*
* @param user
* @param password
*/
public void login(String user, String password)
{
// readUntil("login:");
readUntil("login:");
write(user);
readUntil("Password:");
write(password);
readUntil(prompt + "");
}
/**
* 讀取分析結果
*
* @param pattern
* @return
*/
public String readUntil(String pattern)
{
try
{
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char ch = (char)in.read();
while (true)
{
sb.append(ch);
if (ch == lastChar)
{
if (sb.toString().endsWith(pattern))
{
return sb.toString();
}
}
ch = (char)in.read();
System.out.print(ch);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 寫操作
*
* @param value
*/
public void write(String value)
{
try
{
out.println(value);
out.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 向目標發送命令字元串
*
* @param command
* @return
*/
public String sendCommand(String command)
{
try
{
write(command);
return readUntil(prompt + "");
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 關閉連接
*/
public void disconnect()
{
try
{
telnet.disconnect();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
TelnetClient telnet = new TelnetClient();
try {
Shell she =new Shell("10.**.***.***", 23, "***", "***");
System.out.println(she);
System.out.println(she.sendCommand("ls"));
she.disconnect();
}catch (Exception e) {
// TODO: handle exception
}
}
}
4、java遠程進行telnet ftp ssh連接的方法
文件傳輸協議(File Transfer Protocol, FTP)FTP是用於在網路上進行文件傳輸的一套標准協議。 它屬於網路協議組的應用層。 FTP是一個8位的客戶端-伺服器協議, 能操作任何類型的文件而不需要進一步處理, 就像MIME或Unencode一樣。但是, FTP有著極高的延時,這意味著, 從開始請求到第一次接收需求數據之間的時間會非常長, 並且不時的必需執行一些冗長的登陸進程。 概述 FTP服務一般運行在20和21兩個埠。 埠20用於在客戶端和伺服器之間傳輸數據流, 而埠21用於傳輸控制流,並且是命令通向ftp伺服器的進口。 當數據通過數據流傳輸時,控制流處於空閑狀態。 而當控制流空閑很長時間後,客戶端的防火牆會將其會話置為超時, 這樣當大量數據通過防火牆時,會產生一些問題。此時, 雖然文件可以成功的傳輸,但因為控制會話會被防火牆斷開, 傳輸會產生一些錯誤。 FTP實現的目標: 促進文件的共享(計算機程序或數據) 鼓勵間接或者隱式的使用遠程計算機 向用戶屏蔽不同主機中各種文件存儲系統的細節 可靠和高效的傳輸數據 缺點: 密碼和文件內容都使用明文傳輸,可能產生不希望發生的竊聽。 因為必需開放一個隨機的埠以建立連接,當防火牆存在時, 客戶端很難過濾處於主動模式下的FTP流量。 這個問題通過使用被動模式的FTP得到了很大解決。 伺服器可能會被告知連接一個第三方計算機的保留埠。 FTP雖然可以被終端用戶直接使用, 但是它是設計成被FTP客戶端程序所控制。 運行FTP服務的許多站點都開放匿名服務,在這種設置下, 用戶不需要帳號就可以登錄伺服器,默認情況下, 匿名用戶的用戶名是:「anonymous」。 這個帳號不需要密碼, 雖然通常要求輸入用戶的郵件地址作為認證密碼, 但這只是一些細節或者此郵件地址根本不被確定, 而是依賴於FTP伺服器的配置情況。 [編輯] 主動和被動模式 FTP有兩種使用模式:主動和被動。 主動模式要求客戶端和伺服器端同時打開並且監聽一個埠以建立連 接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。 所以,創立了被動模式。 被動模式只要求伺服器端產生一個監聽相應埠的進程, 這樣就可以繞過客戶端安裝了防火牆的問題。 一個主動模式的FTP連接建立要遵循以下步驟: 客戶端打開一個隨機的埠(埠號大於1024,在這里, 我們稱它為x), 同時一個FTP進程連接至伺服器的21號命令埠。此時, 源埠為隨機埠x,在客戶端,遠程埠為21,在伺服器。 客戶端開始監聽埠(x+1),同時向伺服器發送一個埠命令( 通過伺服器的21號命令埠), 此命令告訴伺服器客戶端正在監聽的埠號並且已准備好從此埠接 收數據。這個埠就是我們所知的數據埠。 伺服器打開20號源埠並且建立和客戶端數據埠的連接。此時, 源埠為20,遠程數據埠為(x+1)。 客戶端通過本地的數據埠建立一個和伺服器20號埠的連接, 然後向伺服器發送一個應答,告訴伺服器它已經建立好了一個連接。 [編輯] FTP和網頁瀏覽器 大多數最新的網頁瀏覽器和文件管理器都能和FTP伺服器建立連接 。這使得在FTP上通過一個介面就可以操控遠程文件, 如同操控本地文件一樣。 這個功能通過給定一個FTP的URL實現,形如ftp://< 伺服器地址>(例如, ftp://ftp.gimp.org )。是否提供密碼是可選擇的,如果有密碼,則形如ftp://< login>:<password>@< ftpserveraddress>。 大部分網頁瀏覽器要求使用被動FTP模式, 然而並不是所有的FTP伺服器都支持被動模式。
5、java如何檢測telnet伺服器是否斷開
只能嘗試往socket裡面寫信息,然後捕獲異常。
6、java中telnet到遠程伺服器,然後執行cmd命令,求代碼,謝謝了
package place.in.javaeye;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
public class Shell
{
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';// 普通用戶結束
public Shell(String ip, int port, String user, String password)
{
try
{
telnet.connect(ip, port);
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 根據root用戶設置結束符
this.prompt = user.equals("root") ? '#' : '>';
login(user, password);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 登錄
*
* @param user
* @param password
*/
public void login(String user, String password)
{
// readUntil("login:");
readUntil("login:");
write(user);
readUntil("Password:");
write(password);
readUntil(prompt + "");
}
/**
* 讀取分析結果
*
* @param pattern
* @return
*/
public String readUntil(String pattern)
{
try
{
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char ch = (char)in.read();
while (true)
{
sb.append(ch);
if (ch == lastChar)
{
if (sb.toString().endsWith(pattern))
{
return sb.toString();
}
}
ch = (char)in.read();
System.out.print(ch);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 寫操作
*
* @param value
*/
public void write(String value)
{
try
{
out.println(value);
out.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 向目標發送命令字元串
*
* @param command
* @return
*/
public String sendCommand(String command)
{
try
{
write(command);
return readUntil(prompt + "");
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
/**
* 關閉連接
*/
public void disconnect()
{
try
{
telnet.disconnect();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args) {
TelnetClient telnet = new TelnetClient();
try {
Shell she =new Shell("10.**.***.***", 23, "***", "***");
System.out.println(she);
System.out.println(she.sendCommand("ls"));
she.disconnect();
}catch (Exception e) {
// TODO: handle exception
}
}
}
7、springmvc中引用了memcached-java-client為什麼在終端用telnet打不開memcache服務
首先可以在多台伺服器裝memcached,啟動時分別指定容量和埠
訪問時採用集群方式訪問,只需要spring配置文件裡面配置即可
value可以放任何對象,包括集合
每個鍵值的生命周期可以在放入時獨立設置
類庫可以用spymemcached
數據更新方式可以在後台的定時任務中執行
下面是spring mvc中配置:
<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean">
<property name="servers" value="伺服器A:埠,伺服器B:埠,伺服器C:埠" />
<property name="protocol" value="BINARY" />
<property name="transcoder">
<bean class="net.spy.memcached.transcoders.SerializingTranscoder">
<property name="compressionThreshold" value="1024" />
</bean>
</property>
<property name="opTimeout" value="2000" />
<property name="timeoutExceptionThreshold" value="1998" />
<property name="locatorType" value="CONSISTENT" />
<property name="hashAlg">
<value type="net.spy.memcached.DefaultHashAlgorithm">KETAMA_HASH</value>
</property>
<property name="failureMode" value="Redistribute" />
<property name="useNagleAlgorithm" value="false" />
</bean>
8、java 使用telnet連接Linux系統伺服器後,如何發送Ctrl t到Linux
連接遠程伺服器後只能在控制台輸入命令,快捷鍵是針對自己的機器的,所以不可以這樣操作,基本上所有的操作都可以用命令處理啊
9、我想通過JAVA程序實現讓訪問我的客戶端執行telnet命令(我是伺服器端),請問能實現么
本質還是soket編程,至於你執行什麼命令這個你完全都可以定義,因為這個是你自己的程序負責解析的命令,沒有什麼關系
10、java使用telnet連接遠程伺服器調用cmd命令時 報堆溢出錯誤是什麼原因?
如果執行一次沒問題,執行多次後,出現內存溢出,檢查代碼,查看流是否都已經關閉,沒有疏漏。
如果程序啟動後,第一次執行就出現內存溢出錯誤,設置你的ide,調高分配內存。