2012-09-20 2 views
0

& 스위치의 특정 기능 세트에 필요한 옵션의 양으로 인해 간단한 bash 별명을 작성하고자합니다. 이것은 배경 정보이며 문제는 아닙니다.마스킹 사용자 입력 및 인코딩

문제의 명령을 수행하려면 최소화하고 다른 사용자의 개인 정보를 동시에 제공하려는 암호 구문 (여러 위치에있는 경우가 많음)이 필요합니다. 여기

alias test="read -sp 'Enter passphrase: ' pass; gpg --batch --passphrase $pass --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext" 

별명이 잘 작동 암호를 입력하라는 메시지를 표시하고, 암호 해독 프로세스에 적용 ... 별명 예이다.

이것은 문제 : 위의 예에서와 같이 -sp utlity를 사용하지 않고 파일을 암호화하고 암호를 입력하면 암호화 된 파일 암호가 '읽기'바이너리를 사용하는 것과 다릅니다. 입력을 가린다.

나는 그것이 내가

누구든지이 경험 등 추가 라인 엔딩없이 입력 한대로 표시 -sp 읽기 함께 체포됐다 $ 패스의 내용을 표시하는 경우?

답변

3

$pass을 (를) 인용하면 안됩니까? 공백이 포함 된 경우에는 별칭을 설정하는 동안 $을 확장하여 확장되지 않게해야합니다.

그래서 : 당신 같은

alias test="read -sp 'pp: ' pass; gpg --passphrase-fd 3 --etc-etc 3<<< \$pass" 
0

쉘 기능은 간단합니다 :이 외에도

alias test="read -sp 'Enter pp: ' pass; gpg --passphrase \"\$pass\" --batch --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext" 

, 그렇게 암호가 ps 출력에서 ​​끝나지 않는다 --passphrase-fd을 사용할 수 있습니다 따옴표의 수준을 없애고 함수가 다른 파일로 일반화되어야하는 경우 매개 변수를 허용합니다.

( --passphrase-fd를 사용 MVDS '제안)와
# There is already a standard command called 'test'; use a different name 
pass_encrypt() { 
    in=$1 
    out=$in.gpg 
    read -rsp 'Enter passphrase: ' pass 
    gpg --batch --passphrase-fd 3 --symmetric \ 
     --cipher-algo aes256 -o "$out" "$in" 3<<<$pass 
}