socat - exec:'bash -li',pty,stderr,ctty
-> bash: no job control in this shell
Jakich opcji należy użyć, aby uzyskać w pełni rozwiniętą powłokę, tak jak w przypadku ssh / sshd?
Chcę mieć możliwość podłączenia powłoki do wszystkiego, co potrafi obsługiwać socat ( SOCKS 5 , UDP, OpenSSL), ale także do posiadania ładnej powłoki, która poprawnie interpretuje wszystkie klucze, różne Ctrl+ C/ Ctrl+ Z, uzupełnianie tabulatorów, klawisze góra / dół (z historia zdalna).
Aktualizacja 1: Znaleziono opcję socat „setsid”. Naprawia „brak kontroli zadań”. Teraz próbuję naprawić Ctrl+ D.
Aktualizacja 2:
plik socat: `tty`, raw, echo = 0 exec: 'bash -li', pty, stderr, setsid, sigint, sane
. Nie obsługuje dobrze Ctrl+ D/ Ctrl+ Z/ Ctrl+ C, mogę uruchomić w nim Vima, zdalna historia jest OK.
linux
bash
tty
job-control
Vi.
źródło
źródło
Odpowiedzi:
Problemami były:
Teraz mogę mieć powłokę nad wszystkimi funkcjami obsługiwanymi przez socat i mogę uruchamiać vim / screen / ssh, przerywać
ping
^ C, kończyćcat
^ D i robić wszystko inne w tej powłoce.Jeśli bash łamie linie niepoprawnie i / lub
vim
jest za mały lub za duży, możesz użyć termostatu, aby go łatwo naprawić.źródło
STDIN:raw,echo=0
zamiastfile:`tty`,raw,echo=0
działało dla mnie lepiej. Byłem w stanie to wykorzystać (używając dwóch socat z gniazdem domeny unix pośrodku), aby uzyskać dostęp powłoki do kontenera w innej sieciowej przestrzeni nazw.dived -J -S -T --setns /proc/12345/ns/net -- /bin/bash
. W ten sposób ustawiana jest tylko przestrzeń nazw sieciowych, wszystko inne (inne przestrzenie nazw, terminal sterujący, proces nadrzędny) zostaje zachowane.