Si të ekzekutoni një Skript Lokal Shell në një Server SSH në distancë
Problemi me ekzekutimin e komandave mbi SSH është se në përgjithësi ju ose duhet t'i shkruani ato vetë ose të ngarkoni një skedar skripti. Megjithatë, me pak njohuri bash, mund të kaloni skripte të tëra mbi SSH pa pasur skedarin .sh
në makinën në distancë.
Zgjidhja: Kaloni skriptin mbi hyrjen standarde
Komanda SSH ka një modalitet ku mund të ekzekutoni çdo komandë të vetme në një server të largët. Për të ekzekutuar komanda të shumta, do t'ju duhet të përdorni hakun e mëposhtëm:
ssh user@remotehost 'bash -s' < script.sh
Komanda bash -s
do të thotë ekzekutoni komandat e mëposhtme në një sesion të ri bash. Flamuri -s
e bën atë të lexohet nga hyrja standarde dhe biti < script.sh
do të lexojë një skedar skripti lokal në hyrjen standarde.
Skedari lexohet tërësisht në nivel lokal dhe i gjithë dërgohet në serverin në distancë pa ngarkuar asgjë. Kjo kërkon që të vendosni të gjitha komandat në një skedar të veçantë skripti.
Ekzekutimi i shumë komandave në distancë brenda një skripti
Nëse dëshironi të ekzekutoni një pjesë të një skripti shell në një server tjetër, por jo të gjithë, mund të përfshini blloqe të mbivendosura si më poshtë në skriptin tuaj:
ssh user@remotehost 'bash -s' <<'ENDSSH'
# The following commands run on the remote host
echo "test"
cd /home/
pwd
ENDSSH
Kjo funksionon sepse bash -s
po pret çdo lloj hyrje standarde. Direktiva <
Të bësh në këtë mënyrë do të thotë që mund të ruash gjithçka në një skedar skripti, në vend që të bësh një të ri për të ekzekutuar në telekomandë.