① java在linux中執行shell腳本,用telnet檢測指定IP的埠是否可以連接上
你可以增加兩個進程,一個用來監視telnet的輸出,另外一個用來監視是不是有錯。你分析那個telnet的輸出就好了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ExcuteThread extends Thread {
private String name;
public ExcuteThread(String name) {
this.name = name;
}
@Override
public void run() {
try {
Process p = Runtime.getRuntime().exec(name);
InputStream fis = p.getInputStream();
final BufferedReader brError = new BufferedReader(
new InputStreamReader(p.getErrorStream(), "gb2312"));
InputStreamReader isr = new InputStreamReader(fis, "gb2312");
final BufferedReader br = new BufferedReader(isr);
Thread t1 = new Thread() {
public void run() {
String line = null;
try {
while ((line = brError.readLine()) != null) {
// System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (brError != null)
brError.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
Thread t2 = new Thread() {
public void run() {
String line = null;
try {
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
t1.start();
t2.start();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
}
}
}
② Linux如何通過腳本,不停地telnet一個IP,記錄telnet成功的時間並輸出
Telnet本身對另一台伺服器檢查時,容易退不出來。使用Nmap比較合適,然後寫個如下腳本,變更IP及相應的埠及Sleep的時間就可以達到目標。
如下參考:
#!/bin/bash
#Purpose:checkipport
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
exportPATH
#Checkifuserisroot
if[$(id-u)!="0"];then
echo"Error:Youmustberoottorunthisscript"
exit1
fi
Cur_Dir="$(cd-P"$(dirname"${BASHSOURCE[0]}")"&&pwd)"
Cur_Time="$(date+%Y%m%d%H%M%S)"
Dest_Ip=172.16.3.19
Dest_Port=22
if[!-f/usr/bin/nmap];then
yum-yinstallnmap
else
:
fi
functionCheck_Port(){
Port_State=$(nmap-P0-sS-p${Dest_Port}${Dest_Ip}|awk'/STATE/{getlinev;printv}'|awk'{print$2}')
if[X${Port_State}==X'open'];then
echo"${Dest_Ip}${Dest_Port}isopen">>${Cur_Dir}/status.txt
echo"${Cur_Time}">>${Cur_Dir}/status.txt
else
echo"${Dest_Ip}${Dest_Port}isfailure">>${Cur_Dir}/status.txt
echo"${Cur_Time}">>${Cur_Dir}/status.txt
fi
}
whiletrue;
do
Check_Port
sleep3
done
③ Linux系統中如何用shell腳本判斷指定群組內的某用(如TT組下的tp1用戶)是否已成功telnet;
who命令可以看出系統里有多少人登錄進來。
who | grep tp1
echo $?
如果是0 登錄, 1 為沒有登錄。至於關閉第2次登錄,這個不太清楚,telnet是否單獨開個進程,如果是那就kill掉那個進程就是。
④ 如何實現linux的批處理telnet腳本
如現在IP:192.168.12.2,192.168.20.3,10.1.2.1...,處理完一台主機後自動更換下一個IP地址繼續執行。而且所有主機的用戶名和密碼相同。用戶名:user密碼:passwordtelnet到Linux主機後執行的命令如下:cd /tksys/startup/sed -i '/^ntpsvr=/ s/[^=]*$/'`sed -n '/^default=/ s/[^=]*=//p' network.cfg`'/' network.cfg。由於被telnet的Linux主機的網路不穩定,希望在輸入用戶名到最後一條配置的每一條命令都設一個延時處理。如腳本輸入用戶名user後,2s後執行輸入密碼password,輸入密碼的2s後再執行cd /tksys/startup/,以此類推。
⑤ 關於telnet 自動腳本
沒有這樣的自動腳本,因為telnet的密碼是沒有回顯的。正常情況下,輸入後,按回車,就可以了。
⑥ shell腳本ping和telnet
很明顯的一個錯誤就是if要用fi結束,你腳本里有兩個if,我卻只能找到一個fi;
第二點就是telnet那部分,telnet=`telnet $1 $2`應該就死住沒反應了,你手動模擬一下就好了,比如我:
telnet 192.168.243.1 3131
Trying 192.168.243.1...
Connected to 192.168.243.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
如果我不鍵入^](ctrl+])的話,這個telnet進程是不會結束的,不會結束的話,腳本也就不會進行下一步。
⑦ Linux系統中如何用shell腳步判斷是否telnet成功。
1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。
⑧ 如何用shell腳本實現自動telnet
很多人認為telnet象passwd和su一樣,無法通過管道和輸入轉向使其自動工作,但實際上telnet是支持輸入轉向的.雖然,嚴格的說,shell腳本無法使telnet進入交互狀態,但它確實可你使你進入遠程系統並運行你希望的命令後退出.這遠比用rsh(remsh,rcmd)更令人放心,
使用如下的腳本可以達到你的要求:
(sleep 1;echo user;sleep 1; echo passwd;echo yourcmd ;sleep 1)|telnet remotehost
其中user,passwd,yourcmd,remotehost分別更換成你的用戶名,用戶口令,你想要運行的命令,遠程機器名或IP便可以了. 如果要想使用腳本進入交互狀態,可以使用expect.
如果你要通過telnet某個IP的埠來得到部分數據,則可以用以下命令
(sleep 5;) | telnet IP PORT 這樣就可以在telnet後將PORT在5秒內輸出的數據列印到屏幕上,然後自動退出
EG:
tempValue="KEY"
str4=`(sleep 1;echo AA;sleep 1; echo 123; sleep 1; echo tail -f /aa/log/a.log;sleep 1) | telnet ${IP} | grep ${tempValue}`
num4=`echo ${#str4}`
if [ ${num4} -eq 0 ];then
echo "==::在a.log文件中沒有找到關鍵字KEY,請檢查!"
sheet4="@NULL"
else
echo "==::在a.log文件有找到關鍵字KEY!"
sheet4="@OK"
fi
⑨ 求教關於SecureCRT腳本問題:如何使用腳本判斷telnet是否成功,不成功跳過telnet下一台設備
在crt.Session.Connect "/TELNET " & params(0)後面加一個If判斷就行了。
If crt.Screen.WaitForString ("assword:") <> 0 Then
⑩ 有高手嗎。我用JAVA調用了一個telnet腳本,用它去telnet一台設備的查看命令遇到mor
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
}
}
}