سؤال

أحاول أساسا كتابة أمر يشبه PSTEE إلا أنه يجب أن يتبع العمليات عبر الآلات.

ما أعنيه هو أنه إذا قمت بتشغيل هذا:

$ ssh $node sleep 1000

ثم يجب أن يعرض الأمر شيئا مثل هذا:

ssh $node -- ($node) sleep 1000

وإذا كنت قيد التشغيل:

$ ssh $node ssh $node sleep 1000

ssh $node---($node) ssh $node---($node) sleep 1000

وهلم جرا ...

سؤالي هو: كيف يمكنني تعيين جلسة SSH واحدة على جهاز واحد إلى عملية مستأجرة على جهاز آخر؟

العمليات المحلية والطفل المحلية ليست مشكلة، ولكن كيف يمكنني معرفة الأمر SSH على عقدة واحدة أثار عملية أخرى على عقدة أخرى.

  1. لينكس 2.6.18.

  2. افتتح فقط للأشياء "عن بعد". تشغيل OPENSSH_4.3P2 حاليا.

  3. SSH الوصول إلى جميع العقد بالطبع (المصادقة الرئيسية القائمة) لذلك المتاحة PS و Netstat من جميع العقد.

  4. Linux - فقط "الخارقة" على ما يرام، لا تحتاج إلى أن تكون محمولة على الرغم من أنها ستكون مكافأة إضافية بالطبع.

  5. سيكون المستخدم دائما هو نفسه كما أن الأمر / البرنامج النصي يعمل بهذا المستخدم. هذا المستخدم ليس جذر.

  6. لا يجب أن تكون سريعة، دقيقة فقط.

الحل التلقائي سيكون لكتابة pstree استنساخ، يؤدي ذلك إلى سلسلة الأوامر "ssh"، أرقام منفذ المصدر ثم يذهب إلى الجهاز البعيد في السؤال والأرقام التي واحدة منها sshdالأطفال الذين تم طرحهم من قبل هذا الأمر بالذات.

ولكن ربما هناك طريقة أكثر ذكاء؟ : P.

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

المحلول

في الواقع، أعتقد أن الحل التلقائي الخاص بك هو الطريقة الصحيحة للقيام بذلك: استخدم Netstat للحصول على منفذ المصدر والبحث عنه على الجهاز البعيد. قد تواجه مشكلة في استخدام "Netstat -p" دون جذر - لقد جربته على جهازين، واحد كان سعيدا لإظهار العمليات الخاصة بي وواحد لم يكن كذلك.

بالإضافة إلى عملاء SSH، قد تمتد هذا للبحث عن عملاء آخرين يستخدمون اتصالات SSH، مثل RSYNC أو Mercurial. فقط احرص على عدم تتبع اتصال البرنامج الخاص بك بشكل متكرر!

تظهر تجربة سريعة مع Netstat و Pstre أن الفكرة صوتي:

me@mymachine:~$ netstat -p
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 mymachine.example:43681 remote.example.com:ssh ESTABLISHED 27044/ssh
tcp        0      0 mymachine.example:39228 remote.example.com:ssh ESTABLISHED 14499/ssh
tcp        0      0 mymachine.example:45814 remote.example.com:ssh ESTABLISHED 20899/ssh
 me@mymachine:~$ ssh remote netstat -p | grep mymachine.example:43681
tcp        0      0 remote.example.com:ssh mymachine.example:43681 ESTABLISHED 10361/1
me@mymachine:~$ ssh remote pstree -a 10361
sshd
  `-grep -n -e wotsit -i -R /local/home/me/somewhere /dev/null

سأكون مهتما برؤية النتيجة، لأنه سيكون مفيدا جدا بالنسبة لي!

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