تثبيت جافا على لينكس باستخدام SSH
سؤال
أريد تثبيت Java على العديد من أجهزة الكمبيوتر باستخدام SSH حتى أرغب في كتابة برنامج نصي باش سيفعله (تقريبا):
for c in computers
do
scp jre--.rpm $c
ssh $c 'sudu -s; chmod a+x jre--.rpm ; ./jre--.rpm; echo "success!"'
done
المشكلة هي أنه أثناء تثبيت Java أحتاج إلى "قراءة" الإشعار واكتب "نعم" في النهاية. كيف فعلتها؟ هل هناك طريقة أسهل من "توقع"؟ وإذا لم يكن كيفية توافقه في البرنامج النصي باش؟
شكر كثيرا
المحلول 2
نتوقع هو الطريق للذهاب (شكرا http://www.dnmouse.org/java.html.):
for c in computers
do
scp jre--.rpm $c
ssh -t $c 'sudo -s; yum -y install expect; sudo chmod a+x jre--.rpm'
ssh -t $c '/usr/bin/expect -c \
"set timeout -1; spawn ./jre-6u13-linux-x64-rpm.bin; sleep 1; send -- q\r; sleep 1; send -- yes\r; expect eof"
echo "success!"'
done
نصائح أخرى
أولا، سجل ضغطات المفاتيح الضرورية إلى ملف مثل هذا:
cat > keystrokes
يضرب كنترول+جيم عند الانتهاء من تسجيل ضغطات المفاتيح. تحقق من محتوى الملف. قد لا تسجل بعض المفاتيح مثل علامة التبويب بشكل صحيح ولكن لا يزال بإمكانك تحرير الملف مع محرر نصوص. لاحظ أن التمرير لأسفل على وحدة تحكم (على سبيل المثال عند قراءة الإخراج من more
) يمكن أن يتم عادة مع شريط الفضاء.
يمكنك SCP هذا الملف مثلك بالفعل مع RPM. بعد ذلك، أنابيب محتوى ملف ضغط المفاتيح إلى الإدخال القياسي للمثبت:
cat keystrokes | ./someinstaller
تعديل: آسف لسماع ذلك لا يعمل. ربما يمكنك إلقاء نظرة على توقع, ، وهي أداة UNIX مصممة لهذا النوع من الأشياء. أعتقد أنه يتم تضمينه في معظم جنو / لينكس توزيعات. إذا كنت على دراية بيثون قد تفضل pexten في حين أن.