क्यों tmux और विम प्रिंट में कचरा मेरे SSH आवरण स्क्रिप्ट?

0

सवाल

मैंने लिखा है एक SSH आवरण स्क्रिप्ट है कि स्थानीय लाइन संपादन. यह लागू करने के लिए इसी तरह SSH. उदाहरण के लिए: python3 sshwrapper.py [email protected] -CX. समस्या यह है कि जब मैं कनेक्ट करने के लिए एक दूरस्थ कंप्यूटर का उपयोग कर इस स्क्रिप्ट का उपयोग करें और vim या tmux वहाँ कुछ कचरा मुद्रित किया जाता है. इस समस्या के लिए विशिष्ट नहीं है SSH के बाद से, समस्याओं को भी दिखाई देते हैं जब मैं इस स्क्रिप्ट का उपयोग करने के लिए लपेटो bash के बजाय ssh.

उदाहरण:

  • शुरू करने के बाद tmux, कुछ कचरा मुद्रित किया जाता है के बाद मार शीघ्र:

    abc@me:~$ ^[[?65;1;9c

  • जब खोलने एक नई फ़ाइल में विम का उपयोग कर vim mynewfile.txt, यह प्रतीत होता है पर पहली पंक्ति:

    ^[[2;2R^[[>65;6003;1c^[]10;rgb:0000/0000/0000^G^[]11;rgb:ffff/ffff/dddd^G

कैसे क्या मैं इस समस्या को ठीक?

इस स्क्रिप्ट में प्रश्न:

import os
import pty
import select
import signal
import subprocess
import sys

master_fd, slave_fd = pty.openpty()
process = subprocess.Popen(['ssh'] + sys.argv[1:],
                           stdin=slave_fd,
                           stdout=slave_fd,
                           stderr=subprocess.STDOUT,
                           # Important for Ctrl-c in the remote terminal.
                           preexec_fn=os.setsid)

def sigint_handler(_signum, _frame):
    os.write(master_fd, b'\03')  # Send Ctrl-c.
signal.signal(signal.SIGINT, sigint_handler)

def sigtstp_handler(_signum, _frame):
    os.write(master_fd, b'\x1A')  # Send Ctrl-z.
signal.signal(signal.SIGTSTP, sigtstp_handler)

def sigchld_handler(_signum, _frame):
    process.wait()
    sys.exit(process.returncode)
signal.signal(signal.SIGCHLD, sigchld_handler)

while process.poll() is None:
    # Block until there is something to read or write.
    r, w, e = select.select([sys.stdin, master_fd], [], [])
    if sys.stdin in r:
        # Write to SSH.
        user_input = os.read(sys.stdin.fileno(), 4096)
        if not user_input:
            os.write(master_fd, b'\04')  # Send Ctrl-d.
        else:
            os.write(master_fd, user_input)
    if master_fd in r:
        # Read from SSH.
        data = os.read(master_fd, 4096)
        sys.stdout.write(data.decode())
        sys.stdout.flush()

मैं का उपयोग कर रहा हूँ अजगर 3.8.10 Ubuntu पर 20.04 पर दोनों अपने स्थानीय कंप्यूटर से दूरस्थ कंप्यूटर पर है । यह एक आत्म-शिक्षा परियोजना है, तो मैं लिख रहा हूँ इस कार्यक्रम का उपयोग कर अजगर मानक पुस्तकालय केवल.

linux pty python termios
2021-11-24 05:56:26
3
0

वहाँ है एक बुरा हैक की कोशिश कर सकते हैं. बाद में ssh मशीन की कोशिश को हटाने के लि चर LS_COLORS

export LS_COLORS=none

इस परिवर्तन में जारी रहती है, अपने सत्र.

2021-11-26 07:23:48

export LS_COLORS=none पर कोई प्रभाव नहीं है स्थिति.
Flux

आप की कोशिश की है pypi.org/project/termcolor
gettinggud

यह एक आत्म-शिक्षा परियोजना है, तो मैं लिख रहा हूँ इस कार्यक्रम का उपयोग कर अजगर मानक पुस्तकालय केवल.
Flux

इस मामले में मैं सुझाव कर सकते हैं जोड़ने के लिए है कुछ प्रदर्शित करने के लिए फिल्टर को हटाने/रंग: लिंक लिंक. अच्छा परियोजना btw!
gettinggud

क्या है अंतर्निहित समस्या के कारण?
Flux
0

में अपने bashrc:

alias tmux="TERM=screen-256color-bce tmux"

में अपने .tmux.conf:

set -g default-terminal "xterm-256color"

2021-11-30 14:19:56

कचरा अभी भी प्रकट होता है दोनों के लिए tmux और शक्ति.
Flux
0

की कोशिश करने के लिए चलाने के लिए अपनी स्क्रिप्ट से एक अलग टर्मिनल आवेदन (अधिमानतः सेट करने के लिए चूक) और देखें यदि आप अभी भी समस्या है.

2021-12-03 06:15:39

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में