121851
May 04, 2015, updated at 09:54:01 (UTC)
7061
6
0
Automatischer Login per Telnet
Hallo zusammen,
ich habe folgendes Problem. Erstmal bin ich nicht so fit was Programmieren angeht.
Gibt es eine möglichkeit eine Batch-Datei zuschreiben die z.B einen Neustart eines Gerätes durchführt?
Das Gerät hat eine feste IP, einen Benutzernamen und ein Passwort.
Ist es möglich das Listen mässig abzuarbeiten?
Anbei mal ein Bild wie das ganze Aussieht.
Vielen Dank schon mal für eure Hilfe.
Mit freundlichen Grüßen
fuddel18
ich habe folgendes Problem. Erstmal bin ich nicht so fit was Programmieren angeht.
Gibt es eine möglichkeit eine Batch-Datei zuschreiben die z.B einen Neustart eines Gerätes durchführt?
Das Gerät hat eine feste IP, einen Benutzernamen und ein Passwort.
Ist es möglich das Listen mässig abzuarbeiten?
Anbei mal ein Bild wie das ganze Aussieht.
Vielen Dank schon mal für eure Hilfe.
Mit freundlichen Grüßen
fuddel18
Please also mark the comments that contributed to the solution of the article
Content-Key: 270997
Url: https://administrator.de/contentid/270997
Printed on: May 4, 2024 at 11:05 o'clock
6 Comments
Latest comment
Zitat von @121851:
Gibt es eine möglichkeit eine Batch-Datei zuschreiben die z.B einen Neustart eines Gerätes durchführt?
Das Gerät hat eine feste IP, einen Benutzernamen und ein Passwort.
Gibt es eine möglichkeit eine Batch-Datei zuschreiben die z.B einen Neustart eines Gerätes durchführt?
Das Gerät hat eine feste IP, einen Benutzernamen und ein Passwort.
Ja,
Ist es möglich das Listen mässig abzuarbeiten?
Ja.
Anbei mal ein Bild wie das ganze Aussieht.
???
Moin,
So was kann man z.B. mit expect scripten.
lks
PS: Es gibt auch Windows-versione von tcl/tk, mit dem expect unter windows läuft oder man nimmt expect.net.
Moin zusammen,
Hostname, Username, Password werden in der letzen Zeile angepasst.
Da ich es für deinen Fall nicht testen kann unverbindlich und ohne Gewähr. Eventuell musst du die waittime (ms) erhöhen falls es nicht klappen sollte.
Grüße Uwe
Kann jemand den Code mal schreiben?
habe ich gerade als Powershell-Script da.Hostname, Username, Password werden in der letzen Zeile angepasst.
Da ich es für deinen Fall nicht testen kann unverbindlich und ohne Gewähr. Eventuell musst du die waittime (ms) erhöhen falls es nicht klappen sollte.
function Invoke-Telnet{
param(
[parameter(mandatory=$true)][string]$hostname,
[int]$port = 23,
[parameter(mandatory=$true)][string]$username,
[parameter(mandatory=$true)][string]$password,
[string[]]$commands,
[int]$waittime = 1000
)
$tcpclient = new-object System.Net.Sockets.TcpClient($hostname,$port)
if ($tcpClient.Connected){
write-host "Connected to $hostname" -ForegroundColor Green
$stream = $tcpclient.GetStream()
$writer = new-Object System.IO.StreamWriter($stream)
$buffer = new-Object Byte 1024
$encoding = new-Object System.Text.ASCIIEncoding
# Login
write-host "Login..." -ForegroundColor Green
sleep -Milliseconds $waittime
$writer.WriteLine($username)
$writer.Flush()
sleep -Milliseconds $waittime
$writer.WriteLine($password)
$writer.Flush()
sleep -Milliseconds $waittime
# invoke remote commands
$commands | %{
write-host "Invoking Command: $_" -ForegroundColor Yellow
$writer.WriteLine($_)
$writer.Flush()
sleep -Milliseconds $waittime
}
$output = ""
while ($stream.DataAvailable){
[int32]$bytes = $stream.Read($buffer,0,$buffer.length)
$output += $encoding.GetString($buffer,0,$bytes)
}
# release resources
$writer.Close();$writer.Dispose()
# return output
write-host "Response:`n" -ForegroundColor Black -BackgroundColor Yellow
return $output
}else{
write-host "Could not connect to $hostname on Port $port" -ForegroundColor Red
}
$tcpclient.Close()
$tcpclient.Dispose()
}
Invoke-Telnet -hostname '169.254.102.184' -username 'bssaudio' -password 'GEHEIM' -commands 'reboot'
Zitat von @121851:
kann, ich das in eine Batch-Datei kopieren, ändern und es geht?
Nein, sonst hätte ich ja nicht geschrieben das es Powershell ist Lässt sich aber eigentlich in 1 Minute ergoogeln ....kann, ich das in eine Batch-Datei kopieren, ändern und es geht?
Da mir die Frage öfter gestellt wird:
Anleitung: Wie starte ich Powershell-Scripte
- Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
- Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine administrative Powershell-Konsole und gibt dort den Befehl
Set-ExecutionPolicy RemoteSigned -Force
ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden:Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
- Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:"C:\Pfad\script.ps1"
.\script.ps1
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
powershell -?
in einer Konsole an.