আমি এসএসএইচের মাধ্যমে একটি দূর স্ক্রিপ্ট চালু করছি:
ssh user@ipaddress '~/my_script.sh'
সবকিছু ঠিকঠাক চলছে তবে একবার স্ক্রিপ্ট শেষ হয়ে গেলে সংযোগটি বন্ধ হয় না। বর্তমান সংযোগটি ভাঙ্গতে আমাকে সিটিআরএল-সি টিপতে হবে।
আমি 'exit / my_script.sh' এ "প্রস্থান" কমান্ড চেষ্টা করেছি এবং এটি অকেজো। আমি 'log / my_script.sh' এ "লগআউট" কমান্ড চেষ্টা করেছি এবং আমি একটি বার্তা পেয়েছি:
logout: not login shell: use exit
...
স্ক্রিপ্টটি শেষ হয়ে গেলে আমি কীভাবে স্বয়ংক্রিয়ভাবে এবং সঠিকভাবে এসএসএইচ বন্ধ করতে পারি?
(স্পষ্টকরণের জন্য পরিবর্তন :) এখানে আমার স্ক্রিপ্টের ভিতরে কী রয়েছে:
#!/bin/sh
path_sources_qas=/sources/QuickAddress/
path_qas_bin=/usr/bin/qas
umount_disque_qas()
{
# Umount du disque 'qas' s'il n'avait pas été 'umount' :
nom_disque_monte=`cat /etc/mtab | grep qas | awk '{ print $2}'`
if [ "$nom_disque_monte" != "" ]
then
echo "For safety, umount : $nom_disque_monte"
umount $nom_disque_monte
fi
}
# Umount twice (we never know if a st***d guy mounted it twice) :
umount_disque_qas
umount_disque_qas
echo "--------------------------------"
echo "Install ISO quick address..."
nom_fichier_iso=`ls -t $path_sources_qas | awk '{if (NR==1) {print $1}}'`
echo "Mount disk $nom_fichier_iso..."
mount -o loop -t iso9660 $path_sources_qas/$nom_fichier_iso /mnt/qas
echo "Done."
# All the folders are like this :
# /usr/bin/qas/Data.old.10
# /usr/bin/qas/Data.old.11
# /usr/bin/qas/Data.old.12
# ...
echo "--------------------------------"
echo "Stopping QuickAdress server..."
cd $path_qas_bin/apps/
./wvmgmtd shutdown qaserver:2021
sleep 3
echo "Done."
# Get last number of the folder:
num_dernier_dossier_backup=`ls -Atd $path_qas_bin/Data.old* | awk '{if (NR==1) {print $1}}' | awk -F . '{print $NF}'`
# Add 1 :
let "num_dernier_dossier_backup += 1"
# Full name :
nom_dossier_backup=Data.old.$num_dernier_dossier_backup
echo "--------------------------------"
echo "Saving Data to $nom_dossier_backup..."
cd $path_qas_bin
mv Data $nom_dossier_backup
echo "Done."
echo "--------------------------------"
echo "Copying new folder Data..."
cd $path_qas_bin
cp -r /mnt/qas/Data .
echo "Done."
echo "--------------------------------"
echo "Deleting unused datas..."
cd $path_qas_bin/apps/
rm -f $path_qas_bin/Data/frxmos.dap
echo "Done."
echo "--------------------------------"
echo "Restart server..."
cd $path_qas_bin/apps/
./qaswvd &
sleep 3
echo "Done."
sleep 3
echo "--------------------------------"
echo "Check: server state: you should read 'OK':"
./wvmgmtd srvlist
echo "Done."
echo "--------------------------------"
echo "Check: active licences (only one here):"
./wvmgmtd licencelistread qaserver:2021
echo "Done."
echo "--------------------------------"
echo "Check: counters: number of addresses left:"
./wvmgmtd counterinforead qaserver:2021
echo "Done."
echo "--------------------------------"
echo "Check: Datasets avalaibles:"
./wvmgmtd datalistread current qaserver:2021
echo "Done."
echo "--------------------------------"
echo "Check: "meters" for "licence by click":"
./wvmgmtd meterslistread current qaserver:2021
echo "Done."
echo "--------------------------------"
echo "Removing virtual disk..."
umount_disque_qas
echo "Done."
echo "All done"
echo "Click 'Ctrl-C' to quit."
exit
আমি যখন এটি এসএসএইচ এর মাধ্যমে চালু করি তখন এটি চলে এবং শেষে, আমি "সমস্ত সম্পন্ন" পড়েছি । সুতরাং এর অর্থ এটি শেষ 2 লাইনে পৌঁছেছে ।
কোনও ধারণা আমি কীভাবে স্বয়ংক্রিয়ভাবে বন্ধ করতে এবং PR করতে পারি
~/.ssh/config
তা ছাড়া চেষ্টা করুন -a -x
এবং কোনও ফরোয়ার্ডিং চলছে না তা নিশ্চিত করার জন্য বিকল্পগুলি (এবং না -o
) পাস ssh
করুন। যদি এটি এখনও কাজ না করে তবে স্ক্রিপ্টের বিষয়বস্তুগুলি দেখান।
ssh <yourusername>@localhost '(ls; sleep 10 &); echo Done; jobs'
ফাইলগুলি তালিকাবদ্ধ করবে, প্রদর্শন শেষ হবে এবং ফিরে আসার আগে 10 সেকেন্ড অপেক্ষা করবে।