Så här kör du ett lokalt skalskript på en fjärr -SSH -server

0
130

Problemet med att köra kommandon över SSH är att du i allmänhet antingen måste skriva dem själv eller ladda upp en skriptfil. Men med lite bash kunskap kan du skicka hela skript över SSH utan att ha .sh-filen på fjärrmaskinen.

Lösningen: Passera Skriptet över standardinmatning

SSH -kommandot har ett läge där du kan köra ett enda kommando på en fjärrserver. För att köra flera kommandon måste du använda följande hack:

ssh user@remotehost 'bash -s' & lt; script.sh

Kommandot bash -s betyder “ kör följande kommandon i en ny bash -session. ” Flaggan -s gör att den läses från standardinmatning och & lt; script.sh bit kommer att läsa en lokal skriptfil till standardinmatning.

Filen läses helt lokalt och alla skickas till fjärrservern utan att ladda upp något. Detta kräver att du lägger in alla kommandon i en separat skriptfil.

Kör många fjärrkommandon i ett skript

Om du istället vill köra en del av ett skalskript på en annan server, men inte hela grejen, kan du inkludera kapslade block som följande i ditt skript:

ssh user@remotehost 'bash -s' & lt; & lt; ' ENDSSH ' # Följande kommandon körs på fjärrvärdet eko “test” cd/home/pwd ENDSSH Annonsering

Detta fungerar eftersom bash -s förväntar sig någon form av standardinmatning. & Lt; & lt; 'ENDSSH' -direktivet gör ett “ här-dokument ” struktur, i princip passerar alla tecken mellan det och slutet “ ENDSSH ” till standardinmatning, och därmed till fjärrvärden över SSH.

Om du gör det på det här sättet innebär det att du kan behålla allt i en skriptfil, snarare än att skapa en ny för att köra på fjärrkontrollen.