Hallo,
Ik wil een aantal commando's uitvoeren op een remote (embedded linux) systeem via SSH. Denk aan commando's aan iostat, uptime etc. Het resultaat hiervan moet naar een bestand geschreven worden. Tot zover niet zo spannend.
Dit wil ik echter geautomatiseerd laten doen, bij diverse apparaten in hetzelfde netwerk. Hostname lijst is aanwezig.
De eerste issue daarbij is de SSH host key die je moet opslaan bij de eerste maal verbinden. Dit staat automatiseren in de weg. Ik wou aan de slag met teraterm/putty, maar dan krijg je een dikke vette popup die je handmatig moet bedienen. Van putty weet ik dat de makers bewust geen optie hebben gemaakt voor "auto-accept" omdat het gewoon slechte policy is, maar daar heb ik niks aan
. De apparaten zijn allemaal onbekend en mogelijk in grote aantallen.
Uiteindelijk kwam ik toch uit bij putty (Plink) en bat scripting waar (volgens het almachtige internet) dit zou moeten werken:
Bij die eerste verbinding zou er gevraagd worden om een Yes/no, welke gepushed wordt door "echo yes".
In totaal kwam ik dan nu uit op:
[/code]
hostname wordt meegegeven
set DEVID=%1
%eerste maal verbinden voor de hostkey
echo yes | plink -agent -pw Password root@%DEVID% "exit"
%opnieuw verbinden, script kopieren
plink -ssh root@%DEVID% -pw Password < path\copyscript "cat > ~/copyscript"
%nogmaals verbinden en wat commando's laten lopen, output naar file schrijven.
plink -ssh root@%DEVID% -pw Password < path\test.txt > path\output_data\output.txt
[/code]
Dit leek in eerste instantie te werken, maar het script blijft nu meestal hangen na de laatste login. De commando's uit test.txt worden niet meer gedaan. De logfile bevat enkel:
Af en toe lijkt hij wel door te lopen, maar dat is redelijk zeldzaam. En ik weet niet meer waar te zoeken.
Ligt het aan de hostkey "bodge"?
Is het een timing issue? (misschien dat hij de commando's al uitvoert terwijl de login actie nog loopt).
Ik kom er niet echt uit. Ik hoopte dat iemand hier daar een idee over had.
Een alternatieve methode kan eventueel ook.
ik wil bereiken:
Het gaat om devices die reeds in het veld staan. Allerlei tools meeleveren kan dus niet.
Daarnaast mogen de devices niet rebooten en spul installeren niet mogelijk (dat script kopiëren is randje).
Op de pc die de scripts moet runnen is eventueel wat te installeren, maar ik probeer het zo simpel mogelijk te houden (ik zal ze niet zelf runnen op locatie). Dus bij voorkeur batch scripts en "portable" software.
Relevante software en hardware die ik gebruik
HW: Win 10 laptop
HW (in het veld): Custom Embedded linux platform met netwerkverbinding en SSH
SW die ik nu gebruik:
- batch scripts
- putty (Plink)
Wat ik al gevonden of geprobeerd heb
Vooral dat auto-accept van hostkeys een probleem is. Niet onterecht natuurlijk, maar net als de andere speurders op internet heb ik het nu wel nodig (of er moet een optie zijn die ik nog niet heb gevonden).
Iemand ervaring met Plink, of een ander idee?
Ik wil een aantal commando's uitvoeren op een remote (embedded linux) systeem via SSH. Denk aan commando's aan iostat, uptime etc. Het resultaat hiervan moet naar een bestand geschreven worden. Tot zover niet zo spannend.
Dit wil ik echter geautomatiseerd laten doen, bij diverse apparaten in hetzelfde netwerk. Hostname lijst is aanwezig.
De eerste issue daarbij is de SSH host key die je moet opslaan bij de eerste maal verbinden. Dit staat automatiseren in de weg. Ik wou aan de slag met teraterm/putty, maar dan krijg je een dikke vette popup die je handmatig moet bedienen. Van putty weet ik dat de makers bewust geen optie hebben gemaakt voor "auto-accept" omdat het gewoon slechte policy is, maar daar heb ik niks aan

Uiteindelijk kwam ik toch uit bij putty (Plink) en bat scripting waar (volgens het almachtige internet) dit zou moeten werken:
code:
1
2
3
| echo yes | plink -agent -pw Password root@%DEVID% "exit" --> nogmaals verbinden en dan aan de slag |
Bij die eerste verbinding zou er gevraagd worden om een Yes/no, welke gepushed wordt door "echo yes".
In totaal kwam ik dan nu uit op:
[/code]
hostname wordt meegegeven
set DEVID=%1
%eerste maal verbinden voor de hostkey
echo yes | plink -agent -pw Password root@%DEVID% "exit"
%opnieuw verbinden, script kopieren
plink -ssh root@%DEVID% -pw Password < path\copyscript "cat > ~/copyscript"
%nogmaals verbinden en wat commando's laten lopen, output naar file schrijven.
plink -ssh root@%DEVID% -pw Password < path\test.txt > path\output_data\output.txt
[/code]
Dit leek in eerste instantie te werken, maar het script blijft nu meestal hangen na de laatste login. De commando's uit test.txt worden niet meer gedaan. De logfile bevat enkel:
code:
1
2
3
| Last login: Fri Jan 1 03:52:22 2010 from 10.4.17.102 # |
Af en toe lijkt hij wel door te lopen, maar dat is redelijk zeldzaam. En ik weet niet meer waar te zoeken.
Ligt het aan de hostkey "bodge"?
Is het een timing issue? (misschien dat hij de commando's al uitvoert terwijl de login actie nog loopt).
Ik kom er niet echt uit. Ik hoopte dat iemand hier daar een idee over had.
Een alternatieve methode kan eventueel ook.
ik wil bereiken:
code:
1
2
3
4
5
6
7
8
9
10
11
| loop (hostname lijst) { maak ssh verbinding kopieer linux script run commandos en log terminal output - run linux script - verwijder linux script - iostat - uptime - ... } |
Het gaat om devices die reeds in het veld staan. Allerlei tools meeleveren kan dus niet.
Daarnaast mogen de devices niet rebooten en spul installeren niet mogelijk (dat script kopiëren is randje).
Op de pc die de scripts moet runnen is eventueel wat te installeren, maar ik probeer het zo simpel mogelijk te houden (ik zal ze niet zelf runnen op locatie). Dus bij voorkeur batch scripts en "portable" software.
Relevante software en hardware die ik gebruik
HW: Win 10 laptop
HW (in het veld): Custom Embedded linux platform met netwerkverbinding en SSH
SW die ik nu gebruik:
- batch scripts
- putty (Plink)
Wat ik al gevonden of geprobeerd heb
Vooral dat auto-accept van hostkeys een probleem is. Niet onterecht natuurlijk, maar net als de andere speurders op internet heb ik het nu wel nodig (of er moet een optie zijn die ik nog niet heb gevonden).
Iemand ervaring met Plink, of een ander idee?