Эх сурвалжийг харах

restore pty with socat and pty pair - still not quite right for commands invoked with sudo

Pi 2 сар өмнө
parent
commit
8247185de8
1 өөрчлөгдсөн 16 нэмэгдсэн , 2 устгасан
  1. 16 2
      capture.sh

+ 16 - 2
capture.sh

@@ -18,7 +18,8 @@ LOG_DIR="$LOG_ROOT"/"$PROG"/"$SUBPROG"/"$TIMESTAMP"
 
 mkdir -p "$LOG_DIR"
 
-PTY="$LOG_DIR"/pty
+PTYA="$LOG_DIR"/ptyA
+PTYB="$LOG_DIR"/ptyB
 OUT="$LOG_DIR"/stdout
 ERR="$LOG_DIR"/stderr
 DAT="$LOG_DIR"/dat
@@ -38,5 +39,18 @@ EOF
 trap 'info' EXIT
 
 exec 2> >(tee -a "$DAT" "$ERR")
-exec 1> >(tee -a "$DAT" "$OUT")
+if which socat 1>/dev/null 2>&1 && ! [ "$PROG" = "sudo" ]
+then
+	socat PTY,rawer,link="$PTYA" PTY,rawer,link="$PTYB" &
+	socat="$!"
+	for pty in "$PTYA" "$PTYB"
+	do
+		while ! [ -e "$pty" ]; do sleep 0.01; done
+		stty -F "$pty" rows "$LINES" cols "$COLUMNS"
+	done
+	tee -a "$DAT" "$OUT" 2>/dev/null < "$PTYB" &
+	exec 1> "$PTYA"
+else
+	exec 1> >(tee -a "$DAT" "$OUT")
+fi
 "$@"