سؤال

نحن نحاول استخدام وحدة Paramiko لإنشاء أنفاق SSH عند الطلب على الخوادم التعسفية لأغراض الاستعلام عن قواعد البيانات عن بُعد. لقد حاولنا استخدام العرض التجريبي إلى الأمام.

القيد الذي لدينا هو أنه لا يمكننا تفعيل هذا من قذيفة ثم قتل القشرة يدويًا لإيقاف الراتب. نحتاج إلى فتح اتصال SSH ، والنفق ، وإجراء بعض الإجراءات من خلال النفق ، وإغلاق النفق ، وإغلاق اتصال SSH داخل Python.

لقد رأيت إشارات إلى طريقة server.shutdown () ولكن ليس من الواضح كيفية تنفيذها بشكل صحيح.

أي مساعدة سيكون موضع تقدير كبير ...

هل كانت مفيدة؟

المحلول

لست متأكدًا مما تقصده بـ "تنفيذها بشكل صحيح" - تحتاج فقط إلى تتبع كائن الخادم والاتصال shutdown على ذلك عندما تريد. في forward.py, ، لا يتم تتبع الخادم ، لأن السطر الأخير من forward_tunnel هو

ForwardServer(('', local_port), SubHander).serve_forever()

لذلك لا يمكن الوصول إلى كائن الخادم بسهولة. ولكن يمكنك فقط تغيير ذلك ، على سبيل المثال:

global theserver
theserver = ForwardServer(('', local_port), SubHander)
theserver.serve_forever()

وتشغيل forward_tunnel الوظيفة في موضوع منفصل ، بحيث main تعمل الوظيفة على السيطرة مرة أخرى (بينما serve_forever يتم تشغيله في موضوع منفصل) ويمكنه الاتصال theserver.shutdown() كلما كان ذلك مناسبًا ومطلوبًا.

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