惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
H
Help Net Security
小众软件
小众软件
N
Netflix TechBlog - Medium
C
Check Point Blog
量子位
Last Week in AI
Last Week in AI
GbyAI
GbyAI
Martin Fowler
Martin Fowler
M
MIT News - Artificial intelligence
博客园 - 聂微东
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
D
DataBreaches.Net
Project Zero
Project Zero
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Security Latest
Security Latest
Cisco Talos Blog
Cisco Talos Blog
Recorded Future
Recorded Future
I
Intezer
L
Lohrmann on Cybersecurity
Cyberwarzone
Cyberwarzone
博客园_首页
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
P
Palo Alto Networks Blog
V
V2EX
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
The Exploit Database - CXSecurity.com
The Hacker News
The Hacker News
Blog — PlanetScale
Blog — PlanetScale
G
GRAHAM CLULEY
T
The Blog of Author Tim Ferriss
C
Cisco Blogs
The Register - Security
The Register - Security
L
LINUX DO - 热门话题
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
F
Full Disclosure
博客园 - 司徒正美
Recent Announcements
Recent Announcements
IT之家
IT之家
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Attack and Defense Labs
Attack and Defense Labs
Cloudbric
Cloudbric
Help Net Security
Help Net Security
The Last Watchdog
The Last Watchdog

Bash

Linux bash 脚本监控和重启一个守护进程 - V2EX 有个脚本代码的问题 Bash Script 代码比较,你认为哪个更加容易理解? 有使用 kitty 当日常终端的老哥吗? - V2EX 在输入命令时,自动调用 fzf 进行模糊匹配 使用 shell 的 bash -c "functions"时,是不是所有相关的函数都得声明出来? shell 比较浮点数大小的问题,顺便吐槽以下 shell - V2EX bash-completor:声明式编写 Bash 补全脚本 - V2EX sudo 改用 pkexec 的问题 - V2EX sed 如何查找替换反斜杠 - V2EX lobash 发布 v0.5.0 版本 - V2EX 为什么这样写无法连接(join)数组各项? - V2EX 如何使用 awk 打印 nginx 404 日志的目录 - V2EX 请教一下,怎么把向终端输入的内容重定向一份到文件? - V2EX 请教一下 shell 里使用 jq 处理 json 应该怎么写 - V2EX 求一个 wsl2 ubuntu20.04 的默认 /etc/bash.bashrc - V2EX 如何让 bash 的补全 popup 显示 - V2EX 如何去除 Bash variable expansion 后加的单引号? - V2EX 初学者写了个 bash 脚本,求大佬点评 - V2EX tar 使用管道的困惑 - V2EX 如何获取命令标准输出到变量里并保留颜色?或者能不能一边输出一边赋值或判断。 - V2EX 请问如何在 alias 命令里传递参数? - V2EX Bash 下如何优雅地临时在后台运行程序并易于管理? - V2EX shell tr -cd 匹配字符串问题 - V2EX shell 中的 import 能不能支持 as 或 alias 类似功能 - V2EX Shell 多个文本间隔追加的方法 - V2EX 生产服务器集群被黑了,帮看看这个脚本 - V2EX 如何实现一个符合规范的 shell? - V2EX 请教下如何检测文件是否存在 - V2EX bash 里面有 io 多路复用吗? - V2EX 闲的蛋疼,用 shell 写了个拓扑排序。。。 - V2EX echo '1 2'|awk "{print $2}"的输出为什么是 1 2 - V2EX Shell 中冒号变成了斜线 - V2EX 大家觉得 shell 如何呢? - V2EX 如何让 ls 默认带--group-directories-first 选项 - V2EX shell 脚本用 expect 输入密码,密码带有{}导致 expect 报错 - V2EX 询问一个正则表达式,请大家帮忙 - V2EX 请教一个 bash 的问题 - V2EX 请教 Shell 空字符串数组的问题 - V2EX 统计一下,如果你在用 bash,用什么版本号的 bash? - V2EX sh 可以运行后执行一段脚本吗? bash 是可以的。 - V2EX bash shell history search - V2EX Shell 给变量的赋值里带 $ 要怎么写? - V2EX [求助] shell 处理 yaml - V2EX 今天想合并文件写出个递归。。。 - V2EX 啊,我中毒了 - V2EX 秀一下原生的 “终端.app”(bash) - V2EX # [求助] 用 curl 抓取一个网站,网站有很多分页,但不论怎么指 page=[2-100],抓取的都只是 page=1 的内容... - V2EX 请问这段 shell 代码有设么问题吗 - V2EX
寻一段 shell 来实现自动填写 ssh 登录密码 - V2EX
kuoruan · 2018-09-11 · via Bash

这是一个创建于 2833 天前的主题,其中的信息可能已经有所发展或是发生改变。

非私钥公钥认证方式,仅通过写一段 shell 脚本,自动获取并调用 sshpass 输入密码,实现免输密码登录

网上找到的解决方案:

https://askubuntu.com/a/829837 https://github.com/Shmadul/easyssh

ssh config 文件类似于,通过注释的方式填入密码

Host host
    User root 
    #Password passwd
    HostName localhost
    Port 2222

原脚本:

#!/bin/bash

host=$1
password=`awk "/#Password/ && inhost { print \\\$2 } /Host/ { inhost=0 } /Host $host/ { inhost=1 }" ~/.ssh/config`

if [[ -z "$password" ]]; then
  /usr/bin/ssh $*
else
  sshpass -p $password /usr/bin/ssh $*
fi

但是测试之后无法正常获取到 host 对应的 Password,应该是 awk 语句有问题

希望各位能帮忙看看这 awk 应该怎么写,谢谢

第 1 条附言  ·  2018 年 9 月 12 日

用纯 awk 实现了:

#!/bin/sh

host=$1

if [ -z "$host" ]; then
        echo "Usage: $(basename $0) [host] [...params]"
        exit 128
fi

password="$(awk "/^[[:space:]]*[Hh]ost[[:space:]]+$host/ {
        while ( getline a ) {
                if ( a ~ /^[[:space:]]*[Hh]ost[[:space:]]+/ ) {
                        break;
                } else if ( a ~ /^[[:space:]]*#[[:space:]]*[Pp]assword[[:space:]]+/ ) {
                        gsub(/^[[:space:]]*#[[:space:]]*[Pp]assword[[:space:]]+|[[:space:]]*$/, \"\", a);
                        print a;
                        break;
                }
        }
}" ~/.ssh/config)"

ssh_bin="$(which ssh)"

if [ -z "$password" ]; then
        "$ssh_bin" $@
else
        "$(which sshpass)" -p "$password" "$ssh_bin" $@
fi

先安装 sshpass 然后将脚本保存为任意文件,放到 PATH 下,例如:/usr/local/bin/sshp

在 ssh config 里边加上 #Password 设置密码

Host test-host
    Hostname ...
    User root
    # Password 123456

然后 sshp test-host 就自动登录了。

zbinlin

1

zbinlin      2018 年 9 月 11 日

#Password passwd 要紧接着 Host host

choury

2

choury      2018 年 9 月 11 日 via Android

这种需求我们一般都是用 expect 的

kuoruan

3

kuoruan      2018 年 9 月 11 日

@zbinlin 答案的说明里边并没有说必须要密码挨着 host 写,但是挨着写的话确实就简单多了

kuoruan

4

kuoruan      2018 年 9 月 11 日

自己用简单的方法,差不多实现了,就是不完美

```
#!/bin/sh

host=$1

if [ -z "$host" ]; then
echo "Usage: $(basename $0) [host] [...params]"
exit 128
fi

password="$(awk "/^\\s*Host\\s*$host\\s*#Password/ { print \$4 }" ~/.ssh/config | head -n1)"

ssh_path="$(which ssh)"
sshpass_path="$(which sshpass)"

if [ -z "$password" ]; then
"$ssh_path" $@
else
"$sshpass_path" -p "$password" "$ssh_path" $@
fi
```

然后 config 这么写

```
Host hostname #Password passwd
User root
...
```

Tink

5

Tink      2018 年 9 月 11 日 via iPhone

expect

ant2017

6

ant2017      2018 年 9 月 12 日 via Android

配置文件没配好吧,比如 a.sh host1 参数 host1 在配置文件里配对了吗

thedrwu

7

thedrwu      2018 年 9 月 12 日

```
pw=`grep '^\s*Host \|^\s*#\s*Password ' ~/.ssh/config | grep -1 "$hostname" | sed -n 's/^\s*#\s*Password\s*//p'`
````

thedrwu

8

thedrwu      2018 年 9 月 12 日

@thedrwu

修改一下:

grep '^\s*Host\s\+\|^\s*#\s*Password\s\+' ~/.ssh/config | fgrep -1 "$host" | tail -1 | sed -n 's/^\s*#\s*Password\s\+//p'

虽然我也喜欢用 awk,然而有时候别的工具方便

zhangjn

9

zhangjn      2018 年 9 月 12 日

还直接修改 openssh 的代码