mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-19 18:56:03 +00:00
feature: telnet login with no user/pass required
git-svn-id: https://svn.fhem.de/fhem/trunk@9250 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
5fd23489cd
commit
aceb10b3df
@ -135,7 +135,7 @@ SYSMON_Initialize($)
|
|||||||
$hash->{AttrList} = "filesystems network-interfaces user-defined disable:0,1 nonblocking:0,1 ".
|
$hash->{AttrList} = "filesystems network-interfaces user-defined disable:0,1 nonblocking:0,1 ".
|
||||||
"telnet-time-out ".
|
"telnet-time-out ".
|
||||||
"user-fn2 user-fn ".
|
"user-fn2 user-fn ".
|
||||||
"telnet-prompt-regx telnet-login-prompt-regx ".
|
"telnet-prompt-regx telnet-login-prompt-regx telnet-login-none:0,1 ".
|
||||||
"exclude ".
|
"exclude ".
|
||||||
$readingFnAttributes;
|
$readingFnAttributes;
|
||||||
}
|
}
|
||||||
@ -3814,7 +3814,9 @@ sub SYSMON_Open_Connection($)
|
|||||||
# }
|
# }
|
||||||
#}
|
#}
|
||||||
|
|
||||||
if(!defined($pwd)) {
|
my $tlogin_none=AttrVal($name,'telnet-login-none','0');
|
||||||
|
|
||||||
|
if(!$tlogin_none && !defined($pwd)) {
|
||||||
$msg="Error: no passwort provided";
|
$msg="Error: no passwort provided";
|
||||||
SYSMON_Log($hash, 3, $msg);
|
SYSMON_Log($hash, 3, $msg);
|
||||||
return $msg unless defined $pwd;
|
return $msg unless defined $pwd;
|
||||||
@ -3833,46 +3835,48 @@ sub SYSMON_Open_Connection($)
|
|||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
$hash->{".telnet"}=$telnet;
|
$hash->{".telnet"}=$telnet;
|
||||||
|
|
||||||
SYSMON_Log($hash, 5, "Wait for user or password prompt.");
|
if(!$tlogin_none) {
|
||||||
unless ( ($before,$match) = $telnet->waitfor('/(user|login|password): $/i') )
|
SYSMON_Log($hash, 5, "Wait for user or password prompt.");
|
||||||
{
|
unless ( ($before,$match) = $telnet->waitfor('/(user|login|password): $/i') )
|
||||||
$msg = "Telnet error while waiting for user or password prompt: ".$telnet->errmsg;
|
{
|
||||||
SYSMON_Log($hash, 2, $msg);
|
$msg = "Telnet error while waiting for user or password prompt: ".$telnet->errmsg;
|
||||||
$telnet->close;
|
SYSMON_Log($hash, 2, $msg);
|
||||||
$telnet = undef;
|
$telnet->close;
|
||||||
return $msg;
|
$telnet = undef;
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
if ( $match =~ /(user|login): / && $user eq "")
|
||||||
|
{
|
||||||
|
$msg = "Telnet login requires user name but attribute 'telnetUser' not defined";
|
||||||
|
SYSMON_Log($hash, 2, $msg);
|
||||||
|
$telnet->close;
|
||||||
|
$telnet = undef;
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
elsif ( $match =~ /(user|login): /)
|
||||||
|
{
|
||||||
|
SYSMON_Log($hash, 5, "Entering user name");
|
||||||
|
$telnet->print( $user );
|
||||||
|
|
||||||
|
SYSMON_Log($hash, 5, "Wait for password prompt");
|
||||||
|
unless ($telnet->waitfor( '/password: $/i' ))
|
||||||
|
{
|
||||||
|
$msg = "Telnet error while waiting for password prompt: ".$telnet->errmsg;
|
||||||
|
SYSMON_Log($hash, 2, $msg);
|
||||||
|
$telnet->close;
|
||||||
|
$telnet = undef;
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $match eq "password: " && $user ne "")
|
||||||
|
{
|
||||||
|
SYSMON_Log($hash, 3, "remote user was defined but telnet login did not prompt for user name.");
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSMON_Log($hash, 5, "Entering password");
|
||||||
|
$telnet->print( $pwd );
|
||||||
}
|
}
|
||||||
if ( $match =~ /(user|login): / && $user eq "")
|
|
||||||
{
|
|
||||||
$msg = "Telnet login requires user name but attribute 'telnetUser' not defined";
|
|
||||||
SYSMON_Log($hash, 2, $msg);
|
|
||||||
$telnet->close;
|
|
||||||
$telnet = undef;
|
|
||||||
return $msg;
|
|
||||||
}
|
|
||||||
elsif ( $match =~ /(user|login): /)
|
|
||||||
{
|
|
||||||
SYSMON_Log($hash, 5, "Entering user name");
|
|
||||||
$telnet->print( $user );
|
|
||||||
|
|
||||||
SYSMON_Log($hash, 5, "Wait for password prompt");
|
|
||||||
unless ($telnet->waitfor( '/password: $/i' ))
|
|
||||||
{
|
|
||||||
$msg = "Telnet error while waiting for password prompt: ".$telnet->errmsg;
|
|
||||||
SYSMON_Log($hash, 2, $msg);
|
|
||||||
$telnet->close;
|
|
||||||
$telnet = undef;
|
|
||||||
return $msg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
elsif ( $match eq "password: " && $user ne "")
|
|
||||||
{
|
|
||||||
SYSMON_Log($hash, 3, "remote user was defined but telnet login did not prompt for user name.");
|
|
||||||
}
|
|
||||||
|
|
||||||
SYSMON_Log($hash, 5, "Entering password");
|
|
||||||
$telnet->print( $pwd );
|
|
||||||
|
|
||||||
SYSMON_Log($hash, 5, "Wait for command prompt");
|
SYSMON_Log($hash, 5, "Wait for command prompt");
|
||||||
my $tlogin_prompt=AttrVal($name,'telnet-login-prompt-regx','(#|\$|>)\s*$|Login failed.');
|
my $tlogin_prompt=AttrVal($name,'telnet-login-prompt-regx','(#|\$|>)\s*$|Login failed.');
|
||||||
@ -5169,6 +5173,10 @@ If one (or more) of the multiplier is set to zero, the corresponding readings is
|
|||||||
RegExp to detect login and command line prompt. (Only for access via Telnet.)
|
RegExp to detect login and command line prompt. (Only for access via Telnet.)
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
<li>telnet-login-none<br>
|
||||||
|
set it to 1 when no user and password are required
|
||||||
|
</li>
|
||||||
|
<br>
|
||||||
<li>exclude<br>
|
<li>exclude<br>
|
||||||
Allows to suppress reading certain information. <br>
|
Allows to suppress reading certain information. <br>
|
||||||
supported values: user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime,
|
supported values: user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime,
|
||||||
@ -5838,6 +5846,10 @@ If one (or more) of the multiplier is set to zero, the corresponding readings is
|
|||||||
RegExp zur Erkennung von Login- und Kommandozeile-Prompt. (Nur für Zugriffe über Telnet relevant.)
|
RegExp zur Erkennung von Login- und Kommandozeile-Prompt. (Nur für Zugriffe über Telnet relevant.)
|
||||||
</li>
|
</li>
|
||||||
<br>
|
<br>
|
||||||
|
<li>telnet-login-none<br>
|
||||||
|
soll auf 1 gesetzt werden, wenn kein User und Passwort zum Login notwendig sind.
|
||||||
|
</li>
|
||||||
|
<br>
|
||||||
<li>exclude<br>
|
<li>exclude<br>
|
||||||
Erlaubt das Abfragen bestimmten Informationen zu unterbinden. <br>
|
Erlaubt das Abfragen bestimmten Informationen zu unterbinden. <br>
|
||||||
Mögliche Werte: user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime,
|
Mögliche Werte: user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user