quickly
Goto Top

Powershell - SSH zu 15 Servern

Hallo.

Sorry... ich habe jetzt nach mehreren Stunden vermutlich einfach nur ein Brett vor dem Kopf...

Ich habe ca. 15-20 Linux Server. Hier möchte ich per SSH zugreifen. Soweit...

Die einzelnen Zugriffe klappen auch. Nur möchte ich EIN Powershell-Script (oder auch CMD) ausführen und jede Verbindungen als EXTRA Powershell-Fenster (oder Tab´s) angezeigt.
(Und wenn es geht, der Luxusteil, würde ich gerne 2 Befehle direkt ausführen.)

Mir brummt der Schädel... vermutlich habe ich bei der Suche schon zich mal drüber weggelesen...
Schon mal vielen Dank.

ssh -i C:\Users\MyUsername\.ssh\MyKey.pem -p 123 root@MyServer1.ddns.me
ssh -i C:\Users\MyUsername\.ssh\MyKey.pem -p 471 root@MyServer2.ddns.me
ssh -i C:\Users\MyUsername\.ssh\MyKey.pem -p 321 root@MyServer3.ddns.me
usw.

#Befehl 1 = hostname -f
#Befehl 2 = df -h

Content-Key: 51321596361

Url: https://administrator.de/contentid/51321596361

Printed on: April 27, 2024 at 15:04 o'clock

Member: killtec
killtec Feb 21, 2024 at 13:01:56 (UTC)
Goto Top
mach doch ein start vor jeden Befehl... Das sollte passen.
Member: Michi91
Michi91 Feb 21, 2024 at 13:48:44 (UTC)
Goto Top
und schau dir mal Ansible an. Einstieg ist recht steil, aber lohnt face-smile
Member: Quickly
Quickly Feb 21, 2024 at 13:53:50 (UTC)
Goto Top
Zitat von @Michi91:

und schau dir mal Ansible an. Einstieg ist recht steil, aber lohnt face-smile

Hallo. Danke für den Tip. Jedoch möchte ich es gerne mit Bordwerkzeugen hinbekommen. Und auch noch RedHad... das wird dann echt zu viel.
Member: Quickly
Quickly Feb 21, 2024 updated at 13:56:48 (UTC)
Goto Top
Zitat von @killtec:

mach doch ein start vor jeden Befehl... Das sollte passen.

Hallo. Also wenn ich einfach "Start" davor packe geht es nicht.

Start-Process : Der Parameter kann nicht verarbeitet werden, da der Parametername "i" nicht eindeutig ist. Mögliche  
Übereinstimmungen:  -InformationAction -InformationVariable.
In Zeile:1 Zeichen:11
+ start ssh -i C:\Users\MyUser\.ssh\MyKey.pem -p 222 root@MyServer.ddns.me
+           ~~
    + CategoryInfo          : InvalidArgument: (:) [Start-Process], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.StartProcessCommand
Member: killtec
killtec Feb 21, 2024 at 14:14:17 (UTC)
Goto Top
Also du greifst von einem Windows Rechner aus zu? Da kannst du in einer normalen CMD
start Befehl Parameter
ein extra Fenster starten.
Mache ich u.a. mit Robocopy.
Mitglied: 11078840001
11078840001 Feb 21, 2024 updated at 14:37:58 (UTC)
Goto Top
Powershell
$servers = 'MyServer1.ddns.me','MyServer2.ddns.me','MyServer3.ddns.me'  
foreach($server in $servers){
    Start-Process cmd -Argumentlist "/k ssh -i `"C:\Users\MyUsername\.ssh\MyKey.pem`" -p 123 root@$server `"hostname -f;df -h`""  
}
Batch
set "servers=MyServer1.ddns.me MyServer2.ddns.me MyServer3.ddns.me"  
for %%a in (%servers%) do start "" cmd /k ssh -i "C:\Users\MyUsername\.ssh\MyKey.pem" -p 123 root@%%a "hostname -f;df -h"  
Member: ThePinky777
ThePinky777 Feb 21, 2024 updated at 17:02:07 (UTC)
Goto Top
so geheimtrick von hinten durchs auge face-smile

also anstatt

foreach($server in $servers){
    Start-Process cmd -Argumentlist "/k ssh -i `"C:\Users\MyUsername\.ssh\MyKey.pem`" -p 123 root@$server `"hostname -f;df -h`""    
}

machst du (Code darfst selbst rausfinden:

foreach($server in $servers){
Variable zusammenbauen und zwar deine Zeile:
ssh -i `"C:\Users\MyUsername\.ssh\MyKey.pem`" -p 123 root@$server `"hostname -f;df -h`""
nenen wir sie mal $VarServerZeile

Dann

Speicher die Variable in eine Datei Pfad\serverconnect.bat (welche immer übeschrieben wird, oder du machst dynamische Namen wie du willst...)

Und nun

    Start-Process Pfad\serverconnect.bat
}

Dann wir sich für jede .bat die du so executest ein extra DOS Fenster aufmachen.

Sprich du generierst dynamische .bat Dateien und führst sie aus face-smile


ODER für Faule....

du machst dir deine 25 .bat Dateien manuell und dann machst du eben 25 Zeilen im Powershell Script:

  Start-Process Pfad\serverconnect1.bat
  Start-Process Pfad\serverconnect2.bat
  Start-Process Pfad\serverconnect3.bat
Member: TwistedAir
TwistedAir Feb 21, 2024 at 18:11:09 (UTC)
Goto Top
Moin,

wenn du für ein Programm abseits der Kommandozeile offen bist, lohnt es sich mRemoteNG anzuschauen. Dort wird jede (vorab gespeicherte) Verbindung in einem eigene Tab geöffnet. Und das Programm kann mit weiteren Protokollen umgehen. face-smile

Die Verwendung eines Key Files mit mRemoteNG wird z. B. hier beschrieben: https://technotes.khitrenovich.com/opening-ssh-aws-hosted-linux-servers- ...

Gruß
TA
Mitglied: 11078840001
11078840001 Feb 21, 2024 updated at 20:48:21 (UTC)
Goto Top
Zitat von @ThePinky777:
so geheimtrick von hinten durchs auge face-smile
Joa, Ich fahr auch immer erst durch die Waschanlage um mich danach auf der ortsansässigen Schlamm Strecke auszutoben ... 🙃 Unglaublich ... 🤣.
Member: Quickly
Quickly Feb 22, 2024 at 07:47:57 (UTC)
Goto Top
Zitat von @11078840001:

Powershell
$servers = 'MyServer1.ddns.me','MyServer2.ddns.me','MyServer3.ddns.me'  
foreach($server in $servers){
    Start-Process cmd -Argumentlist "/k ssh -i `"C:\Users\MyUsername\.ssh\MyKey.pem`" -p 123 root@$server `"hostname -f;df -h`""  
}
Batch
set "servers=MyServer1.ddns.me MyServer2.ddns.me MyServer3.ddns.me"  
for %%a in (%servers%) do start "" cmd /k ssh -i "C:\Users\MyUsername\.ssh\MyKey.pem" -p 123 root@%%a "hostname -f;df -h"  

Super, vielen Dank! Ich muss sagen, dass ich mir bei Debian eine 2-3 geben würde... bei Powershell allerdings eine 5. face-smile
Danke!

Mein Fehler, war nicht klar:
Die Befehle werden perfekt ausgeführt!
Jedoch würde ich gerne eine aktive SSH-Sitzung der Server behalten.
Logik:
a) Ich frage Namen und Platz ab.
b) Dann möchte ich manuell weitere Scripte und Befehle ausführen.
Mitglied: 11078840001
Solution 11078840001 Feb 22, 2024 updated at 08:29:48 (UTC)
Goto Top
Dann möchte ich manuell weitere Scripte und Befehle ausführen.
Einfach noch ein
;/bin/bash -i
Also
............ `"hostname -f;df -h;/bin/bash -i`""  
ans Ende der Befehlskette hängen, dann bleibt die Session offen für weitere Root-Schweinereien ...
Member: Quickly
Quickly Feb 22, 2024 at 08:59:23 (UTC)
Goto Top
Zitat von @11078840001:

Dann möchte ich manuell weitere Scripte und Befehle ausführen.
Einfach noch ein
;/bin/bash -i
Also
............ `"hostname -f;df -h;/bin/bash -i`""  
ans Ende der Befehlskette hängen, dann bleibt die Session offen für weitere Root-Schweinereien ...

Top, super, danke!
Member: Geomatrix
Geomatrix Feb 22, 2024 at 12:28:55 (UTC)
Goto Top
Kann auch nur empfehlen das via mRemoteNG zu machen, kannst auch als externes Programm ein SFTP Integration anzulegen und das kannst Linux so entspannt administrieren.
Member: Quickly
Quickly Feb 22, 2024 at 14:18:13 (UTC)
Goto Top
Zitat von @Geomatrix:

Kann auch nur empfehlen das via mRemoteNG zu machen, kannst auch als externes Programm ein SFTP Integration anzulegen und das kannst Linux so entspannt administrieren.

Werde ich mir mal als Alternative ansehen. Danke...