سؤال
أقوم ببناء Gradle/Osgi.
لديّ بناء حزمة OSGI بشكل جيد ، لكنني أريد أتمتة نشر الحزمة. لا أعتقد أن هناك مهمة Gradle لهذا ، لذلك يصبح هذا سؤالًا رائعًا. للنشر في حاوية OSGI ، يمكنك القيام بما يلي:
- Telnet إلى منفذ حاوية OSGI
- أرسل أمر SS لسرد الحزم
- تحليل الحزمة المعنية
- قم بإلغاء تثبيت الحزمة عبر أمر "إلغاء التثبيت [ID]
- قم بتثبيت الحزمة عبر عنوان URL "تثبيت ملف: ///
- تحليل النتائج
- خروج جلسة Telnet.
هل هناك وسيلة إلى Telnet إلى منفذ باستخدام أوامر رائعة وإرسال أوامر وقراءة الإخراج؟
شكرا على أي مساعدة ، فيل
المحلول
لا أعرف عن Telnet ، لكنني عملت مع Groovy و SSH باستخدام Antbuilder ومهمة Sshexec مثل هذا:
class SshClient {
def host
def username
def password
def execute (def command) {
def ant = new AntBuilder()
ant.sshexec(host : host,
username : username,
password : password,
command : command,
trust : "true",
outputproperty : "result")
return ant.project.properties."result"
}
}
def ssh = new SshClient ( host: "myhost",
username : "myuser",
password : "secret")
println ssh.execute("ls")
ستحتاج إلى ant-jsch.jar و jsch-0.1.33.jar أو أعلى في classpath الخاص بك.
نصائح أخرى
يجب أن يكون هذا ببساطة قابلاً للتنفيذ مع المقبس العادي ودفق القراء / الكاتب. Telnet هي مجرد واجهة أمامية لإدخال/إخراج مقبس بسيط والتي هي بروتوكولات مستندة إلى النص.
لذلك ، للقيام بخطواتك:
- قم بإنشاء مقبس عادي إلى المضيف/المنفذ الوجهة
- اكتب "SS"
- إنشاء InputStreamReader
- تستهلك كل شيء متاح
- تحليل للعثور على معرف الحزمة الخاص بك
- أرسل "إلغاء التثبيت" + Bundleid
- تستهلك الدفق حتى تصل مطالبة الأوامر / انتهى إلغاء التثبيت
- إرسال "تثبيت ملف: // path/"
- تستهلك الدفق حتى تصل مطالبة الأوامر / التثبيت
- socket.close ()
نعم ، أنا أعلم أن هذا يشبه الخطوات التي كتبتها بالفعل ، ولكن نظرًا لأن Telnet ليس بروتوكولًا حقيقيًا ، ولكنه مجرد واجهة إلى مآخذ النصوص ، يجب أن يكون هذا قابلاً للتنفيذ بسهولة لنفسك.