سؤال

أنا أتساءل كيفية إعادة توجيه ستدين من السيناريو الحالي إكس تيرم الدورة أي/dev/pts/0 لأحد أن يعمل أيضا أنا.e /dev/pts/1 باستخدام باش ؟ لدي سيناريو باش يفتح 3 ويندوز إكس تيرم و أريد الحصول على مدخلات من واحد فقط من تلك النوافذ وأنا لا يمكن معرفة كيفية القيام بذلك.أي مساعدة هي موضع تقدير!شكرا



تحرير (انتقلت من تحت -- OP قدم هذا التوضيح كإجابة)

أعتقد أنني يجب أن أوضح ما أردت القيام به.سأبدأ السيناريو من pty, دعنا نقول هو /dev/pts/3.هذا السيناريو سوف تفتح 3 xterminals ، دعونا نقول:/dev/pts/0, /dev/pts/1 /dev/pts/2.هذه 3 الجديدة ptys هي ما على المستخدم هو الذهاب لرؤية.السيناريو يسأل المستخدم عن بعض المدخلات أريد المدخلات من المستخدم أن يطبع في /dev/pty/1 و البرنامج الحصول عليه من معلومات من هناك.ومع ذلك حاولت أن تفعل هذا أنها لا تعمل.هنا مقتطف من التعليمات البرمجية.

exec</dev/pts/1

echo
echo "Would you like to search for more info?" 1>/dev/pts/1
read answer

case $answer in
    y) echo "YES" ;;
    n) echo "NO"  ;;
    *) echo "y/n only!";;
esac

بيان القضية في النهاية هو مجرد قليلا النائب لمعرفة ما إذا كان إدخال يعمل فعلا.

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

المحلول

وأظن أن هذا غير ممكن.AFAIK ، دون تعديل شيء في الفضاء نواة من المستحيل قراءة المدخلات من tty (أو pty) ليست الحالي tty.حتى الجذر لا يمكن أن تفعل ذلك.قضيت بعض الوقت في النظر في هذا و كنت غير قادر على معرفة كيفية القيام بذلك ، ولكن لم تجد الكثير من مصادر مدعيا أنه كان من المستحيل.هذا يبدو أنه قد تم تصميم المقرر إلى زيادة الأمن/الخصوصية للمستخدمين.

نصائح أخرى

ربما يمكنك قرص ttyecho لتلبية الاحتياجات الخاصة بك ؟

# /dev/ttysXXX is the result of the tty command in another Terminal window
sudo ttyecho -n /dev/ttysXXX pwd

و ربما ttyecho يمكن أن تكون جنبا إلى جنب مع netcat (أو nc) أو ncat (الذي هو جزء من nmap) للتواصل بين مختلف ttys?

لمزيد من المعلومات انظر:

للرد على توضيح السؤال, طريقة بسيطة لاستخدام FIFO (المسمى) للحصول على الوظيفة.على إرسال المحطة الطرفية:

mkfifo ./myfifo
read var
echo "var" > myfifo

على استلام المحطة الطرفية:

read line < ./myfifo

ببساطة طباعة آخر إكس تيرم من الخاصة بك في جوال المستقبل إكس تيرم:

$ tty
/dev/pts/2

في إرسال إكس تيرم:

$ echo howdy doody > /dev/pts/2

أو من برنامج نصي في إرسال إكس تيرم, إعادة توجيه ستدين كما طلبت:

$ cat > /dev/pts/2

عليك أن شمود أذونات الكتابة إلى /dev/pts/2 إذا كان القيام بذلك عبر المستخدمين.

لا يمكنك التقاط ما طبعت هذه الطريقة على استلام المحطة.لا يوجد مدمج إعادة توجيه طريقة للقبض على المدخلات من آخر محطة.

إذا كنت تريد الآلي طريقة إرسال إكس تيرم لمعرفة الحرف جهاز الاستقبال يمكن أن تكون الإجابة بعدة طرق اعتمادا على ما نوع من التواصل بين العمليات التي تريد استخدامها.الإختراق بسيطة سيكون المتلقي للقيام tty > file1 و المرسل القيام صدى مهما > $(القط file1).

إذا كنت ترغب في محاولة مباشرة هذا من المتلقي بدلا من المرسل مرة أخرى أن يكون لديك اتصال بين العمليات المشكلة التي يمكن حلها بطرق عدة.

أنها بسيطة تحتاج فقط فهم

ls-ls /dev/pts سوف ترى

0 1 2 3 4 افترض أن تقوم بفتح عدة

الآن استخدام واحد وليس 4 و نوع القط </dev/pts/4 أو exec < cat /dev/pts/4

و اكتب شيئا في ال 4 واحد أنت تعرف الآن ما يحدث

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