내가 쓴 SSH 래퍼는 스크립트는 로컬라인 편집합니다. 그것은 마찬가지로 호출되 SSH. 예를 들어: python3 sshwrapper.py [email protected] -CX
. 문제는 연결할 때 사용하여 원격 컴퓨터 이 스크립트 사용 vim
나 tmux
거기에,어떤 쓰레기가 인쇄됩니다. 이 문제는 특정하지 않습 SSH,이후 문제는 나타날 때 나는 이 스크립트를 사용하여 포장 bash
대 ssh
.
예제:
를 시작한 후에
tmux
일부는 쓰레기가 인쇄됩니다 bash 프롬프트abc@me:~$ ^[[?65;1;9c
열 때 새로운 파일 Vim 에서 사용
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 우분투에서 20.04 에는 로컬 컴퓨터 및 원격 컴퓨터입니다. 이 교육은 프로젝트,그래서 내가 쓰는 프로그램을 사용하는 파이썬 표준 라이브러리만 있습니다.
export LS_COLORS=none
에 효과가 없는 상황이다.