سؤال

أريد تثبيت 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 في حين أن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top