① 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
}
}
}