मैंने लिखा है एक 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 पर दोनों अपने स्थानीय कंप्यूटर से दूरस्थ कंप्यूटर पर है । यह एक आत्म-शिक्षा परियोजना है, तो मैं लिख रहा हूँ इस कार्यक्रम का उपयोग कर अजगर मानक पुस्तकालय केवल.
export LS_COLORS=none
पर कोई प्रभाव नहीं है स्थिति.