小编Erw*_*ann的帖子

sSMTP 故障排除:授权失败

我的要求是:

  • 从终端发送电子邮件(为了批处理)
  • 将 pdf 文件附加到该电子邮件(除水印外,所有收件人的 pdf 文件均相同)
  • 指定回复地址 (myusername@gmail.com)

我尝试过“通过 gmail 发送单行消息的最简单答案是使用 ssmtp”,以及几种变体,并不断得到:

笔记本电脑 sSMTP[19226]:授权失败(535 5.7.8 https://support.google.com/mail/?p=BadCredentials d13sm3920147qkj.27 - gsmtp)

谷歌设置:

  • 已启用 IMAP
  • 允许安全性较低的应用程序已开启

对于我尝试的每个ssmtp.conf设置,我之前已经完成了DisplayUnlockCaptcha :

$echo "Testing...1...2...3" | ssmtp myusername@gmail.com
Run Code Online (Sandbox Code Playgroud)

仅查看所述线程/etc/ssmtp/ssmtp.conf,对于应如何设置尚未达成共识:

  • mailhub=smtp.gmail.com:587VS 465
  • UseTLS=YESUseSTARTTLS=Yes(或两者?)
  • hostname=localhost与默认放置在那里的任何内容(在我的例子中,laptop

有人可以提出解决这个问题的建议,并可能完整粘贴一个工作conf文件吗?

2017 年的一个帖子中有一个说法:

您无法使用普通密码使用外部应用程序,您必须访问https://security.google.com/settings/security/apppasswords

是这样吗?(我做不到)

还有哪些替代方案?

附:

  • 操作系统:Linux Mint 19 Tara
  • ssmtp 在升级/更新之前的全新安装中进行了测试
  • 几年前,我能够使用相同的操作系统(早期版本)发送电子邮件
  • 为了确保 AuthPass 的值正确,我用它手动登录我的谷歌帐户。

ssmtp

9
推荐指数
1
解决办法
2万
查看次数

getopts 的意外行为

考虑:

#!/bin/sh

while getopts ":h" o; do
  case "$o" in
    h )
    "Usage:
    sh $(basename "$0") -h      Displays help message
    sh $(basename "$0") arg     Outputs ...

     where:
    -h   help option
        arg  argument."
    exit 0
    ;;
    \? )
    echo "Invalid option -$OPTARG" 1>&2
    exit 1
    ;;
    : )
    echo "Invalid option -$OPTARG requires argument" 1>&2
    exit 1
    ;;
  esac
done
Run Code Online (Sandbox Code Playgroud)

这个调用返回not found为什么?

$ sh getopts.sh -h
getopts.sh: 12: getopts.sh: Usage:
    sh getopts.sh -h        Displays help message
    sh getopts.sh arg …
Run Code Online (Sandbox Code Playgroud)

shell-script getopts

3
推荐指数
1
解决办法
264
查看次数

将制表符分隔的条目传递给 readarray

显然我做得不对,但我认为预期的结果很明确(${#arr[@]}=3)

$ readarray -d "\t" arr < <(printf "%s\t%s\t%s" "x" "y" "z"); echo "${#arr[@]}"
> 1
Run Code Online (Sandbox Code Playgroud)

shell array

3
推荐指数
1
解决办法
399
查看次数

sed 错误:OS X 下的“\1 未在 RE 中定义”

我正在使用OS X 10.10.5,当我尝试以下命令时:

$ ls foo*
foo123bar.pdf
$ for f in foo*; do echo "$f" | sed -E 's:foo:bar:';done
bar123bar.pdf
$ for f in foo*; do echo "$f" | sed -E 's:foo:(&):';done
(foo)123bar.pdf
$ for f in foo*; do echo "$f" | sed -E 's:\(foo\):(\1):';done
sed: 1: "s:foo:(\1):": \1 not defined in the RE
Run Code Online (Sandbox Code Playgroud)

我有一个错误。

我的问题是:如何纠正上面最后一个命令产生的错误?

osx sed

2
推荐指数
1
解决办法
2500
查看次数

从文件名的开头删除数字

我希望这会奏效:

$ find . -type f -exec basename {} \; | while EFS= read -r f; do echo "${f##[0-9]}"; done 
Run Code Online (Sandbox Code Playgroud)

但是,例如,对于命名为:

1foo
11bar

它返回:

foo
1bar

什么时候


是期待。

PS:归根结底,我要mv "$f"修改名字(还要做其他修改)

编辑:

PS2:如果您考虑PS,它不是重复的。无论如何,标记为检查的答案让我满意。

find parameter rename

1
推荐指数
1
解决办法
936
查看次数

循环遍历目录中的文件,每个文件都匹配一个模式

我想在匹配*.pdf的目录中循环匹配的文件[A-J]*

我不明白这个问题有什么不清楚的地方导致搁置。

bash directory files

0
推荐指数
1
解决办法
5297
查看次数

如何遍历 ls 返回的文件

第一次和第二次调用是为了比较。这是我试图开始工作的第三次。

$ ls -a1 *mp3
DaftPunk_VeridisQuo.mp3
French79_AfterParty.mp3
French79_BetweentheButtons.mp3
French79_Hometown.mp3
$ find . -maxdepth 1 -type f -name '*mp3'
./French79_AfterParty.mp3
./French79_Hometown.mp3
./DaftPunk_VeridisQuo.mp3
./French79_BetweentheButtons.mp3
$ for x in "$(ls -a *mp3)"; do mv "./$x" "./electro_$x"; done
mv: cannot stat './DaftPunk_VeridisQuo.mp3'$'\n''French79_AfterParty.mp3'$'\n''French79_BetweentheButtons.mp3'$'\n''French79_Hometown.mp3': No such file or directory
Run Code Online (Sandbox Code Playgroud)

ls

0
推荐指数
1
解决办法
1171
查看次数

可以通过管道复合命令吗?

我的问题是:一个管道可以/如何复合命令 ( { list; })?请参阅附件 B。附件 A 是为了进行比较而给出的。

\n

附件一:

\n
$ cat << EOF | xargs -n 1 echo           \nfoo\nbar\nqux\nEOF\nfoo\nbar\nqux\n
Run Code Online (Sandbox Code Playgroud)\n

附件B:

\n
$ cat << EOF | xargs -n 1 sh -c \'{ var="$1"; echo "$var"; }\'\nfoo\nbar\nqux\nEOF\n\n\n
Run Code Online (Sandbox Code Playgroud)\n

man sh:

\n
-c               Read commands from the command_string operand\n                            instead of from the standard input.  Special parame\xe2\x80\x90\n                            ter 0 will be set from the command_name operand and\n                            the positional parameters ($1, $2, etc.)  set from\n …
Run Code Online (Sandbox Code Playgroud)

shell pipe xargs

0
推荐指数
1
解决办法
86
查看次数

标签 统计

shell ×2

array ×1

bash ×1

directory ×1

files ×1

find ×1

getopts ×1

ls ×1

osx ×1

parameter ×1

pipe ×1

rename ×1

sed ×1

shell-script ×1

ssmtp ×1

xargs ×1