"expect"를 사용하여 시작된 SSH 셸에는 전체 너비가 없습니다. 어떻게 하면 고칠 수 있나요?

"expect"를 사용하여 시작된 SSH 셸에는 전체 너비가 없습니다. 어떻게 하면 고칠 수 있나요?

Unity 런처에서 SSH 자동 로그인을 사용하고 있습니다. 명령은 다음과 같습니다.

gnome-terminal -t SSH1 -e "expect -c 'spawn ssh [email protected] ; expect assword ; send \\"password123\\n\\" ; interact'"

자동 로그인에는 문제가 없지만 그놈 터미널 창을 최대화하면 다음과 같이 창이 기본 크기인 것처럼 ssh 셸 내용이 더 작게 유지됩니다.

스크린샷

처음에는 그놈 터미널이 기본 크기로 시작되고 최대화되었을 때 어떤 이유로 SSH 항목의 크기가 조정되지 않았기 때문이라고 생각했지만 gnome-terminal --window --maximize명령에 추가했는데 동일한 문제가 남아 있으면 창이 최대화되기 시작합니다. 그러나 SSH 쉘 텍스트는 여전히 기본 터미널의 크기입니다.

또한 터미널을 열고 상단에 해당 명령을 입력하면 Unity 런처에서 시작하는 것과 동일한 문제가 발생합니다.

이 문제의 원인과 해결 방법에 대한 아이디어가 있습니까?

답변1

예상 스크립트 상단에서 다음을 사용하십시오.

#trap sigwinch and pass it to the child we spawned
trap {
 set rows [stty rows]
 set cols [stty columns]
 stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

답변2

원하는 효과를 얻는 더 좋은 방법은 다음과 같은 SSH 키를 사용하는 것입니다.엔조팁제안했습니다.

첫 번째

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa

각 프롬프트에서 Enter를 누르고 필드를 비워두면 비밀번호가 없는 기본 키가 생성됩니다. 이것이 당신이 원하는 것입니다.

다음으로 공개 키를 서버에 푸시합니다.

$ ssh-copy-id [email protected]

마지막으로 다음 명령을 사용하여 실행 프로그램을 만듭니다.

gnome-terminal -t SSH1 -x ssh [email protected]

답변3

이는 Expect가 터미널 설정에 사용하는 환경 변수와 관련이 있습니다.

이 문제는 Expect 스크립트 시작 부분에 다음 줄을 추가하면 쉽게 해결할 수 있습니다.

set ::env(TERM) vt100

색상이 지정된 문자가 있는 경우 발견했습니다. 색상이 지정된 문자를 보려면 다음을 시도해 볼 수도 있습니다.

set ::env(TERM) xterm

답변4

코드에 다음을 추가하세요.

trap {
    set XZ [stty rows   ]
    set YZ [stty columns]
    stty rows $XZ columns $YZ < $spawn_out(slave,name)
} WINCH

이것은 Ubuntu 17.10에서 작동하는 것 같습니다.

관련 정보