SecureToken을 생성하는 작은 스크립트(stc라고 함)가 있습니다.stoken
#!/bin/bash
# Read Password
read -p "Password " -s PASS
TOKEN=$(stoken --stdin <<< "$PASS")
xclip -sel c <<< "$TOKEN"
if [[ ! -t 1 ]]; then
echo $TOKEN
fi
일반적인 상황에서는 토큰을 클립보드에 복사합니다. 파이프가 있으면 토큰을 작성해야 stdout
하지만(유효함) 어떤 이유로 파이프의 다음 명령이 실행되지 않습니다. 이 문제와 관련이 있는 것 같은데 read
어떻게 해결해야 할지 모르겠습니다.
예를 들어
$ stc | tee
밝혀지다
$ stc | tee
Password <token echo>
<hangs forever>
답변1
xclip
CLIPBOARD 선택 요청을 처리하기 위해 백그라운드에서 실행되는 하위 프로세스를 포크합니다. 여기서 하위 프로세스는 파이프를 상속하고 클립보드 선택을 재활용할 때 다른 프로세스가 종료될 때까지 이를 열어 둡니다. 여기서는 다음을 수행하세요.
#! /bin/bash -
# Read Password
IFS= read -rsp "Password: " PASS
TOKEN=$(printf %s "$PASS" | stoken --stdin)
printf %s "$TOKEN" | xclip -sel c > /dev/null
[ -t 1 ] || printf '%s\n' "$TOKEN"
(너도 잊어버렸지IFS=
, -r
옵션read
,게다가주위에 인용문$TOKEN
그 다음에echo
임의의 데이터와 함께 사용할 수 없습니다).