쉘 스크립트에서 .muttrc로 변수를 어떻게 전달합니까?

쉘 스크립트에서 .muttrc로 변수를 어떻게 전달합니까?

나는 mutt( mutt-kz실제로 마이그레이션하고 싶지만 이것은 더 큰 프로젝트입니다) 내 SMTP 비밀번호 를 설정 파일에 일반 텍스트로 저장할 필요가 없도록 neomutt여기에서 가져오고 싶지만 pass.muttrc.

이것이 내가 가진 것입니다 .muttrc:

source ~/.mutt/pass.sh|
set smtp_pass = $my_pass

그런 다음 다음 .mutt/pass.sh을 포함합니다.

#! /bin/bash
my_pass=$(pass Example/user)

명령줄에서 추가 echo ${my_pass}하고 실행하면 내 비밀번호가 표시됩니다.pass.sh

부팅할 때 gpg 키를 mutt-kz잠금 해제하라는 메시지가 표시되어 pass일부 기능이 작동하지만 Mutt에서 메일을 보내려고 하면 SMTP 비밀번호를 묻고 비밀번호를 제공하지 않으면 이메일을 보내지 않습니다. SASL 인증 실패')

그렇다면... 쉘 스크립트의 변수를 내 스크립트로 올바르게 전달하려면 어떻게 해야 합니까 .muttrc?

답변1

프로그램은 ~/.mutt/pass.sh아래와 같이 출력을 생성해야 합니다.

set my_pass = swordfish

그래서 다음과 같을 수 있습니다

#!/bin/sh
echo "set my_pass = swordfish"

비밀번호에 특정 특수 문자( \'"및 공백)가 포함된 경우 다음을 수행해야 합니다.인용하다. 예를 들어 비밀번호가 텍스트 파일에 있는 경우 다음을 ~/passwords/smtp.txt사용할 수 있습니다.

#!/bin/sh
~/passwords/smtp.txt sed 's/["$`\\]/\\&/g; s/^/set my_pass = "/; s/$/"/'

비밀번호의 경우 sword\fish이 내용이 인쇄됩니다 set my_pass="sword\\fish".

Gnome 키링을 사용하여 비밀번호를 저장하는 경우 이 secret-tool유틸리티를 사용하여 키링에서 비밀번호를 읽을 수 있습니다. 예를 들어, 다음은 Office 365 비밀번호에 사용하는 것입니다(비밀번호에는 따옴표를 붙여야 하는 특수 문자가 포함되어 있지 않습니다).

source 'printf "set imap_pass="; secret-tool lookup action_url https://login.microsoftonline.com/common/login |'

답변2

또 다른 가능성은 백틱 확장을 사용하는 것입니다. 따라서 다음을 수행할 수 있어야 합니다.

my_pass = `pass Example/user`

최종적으로 마이그레이션하는 경우 neomutt명령줄을 사용하여 변수를 정의할 수도 있습니다.

my_pass=$(pass Example/user) mutt

my_pass그런 다음 예제와 같이 변수를 사용할 수 있습니다 .

관련 정보