标签: bash

通过 SSH 登录时运行 ssh-agent 和 ssh-add 的直接方法?

当我通过 ssh 登录到我的服务器时,我试图让以下命令自动执行:

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我的 ssh 密钥有一个密码短语,每次登录输入一次就可以了。

我尝试将它放在我的 .bashrc 文件中,但是我相信 ssh-agent 会启动一个新的 bash 会话。当我在我的 .bashrc 中有这个后尝试登录时,它卡住了,我必须输入“退出”才能看到“输入密码以解锁密钥”提示

还有其他建议吗?

服务器正在运行 Ubuntu LTS

ubuntu ssh bash bashrc ssh-keygen

53
推荐指数
3
解决办法
8万
查看次数

如何通过 ssh 在远程机器上运行本地 bash 脚本?

我正在寻找一种方法将配置从一台中央机器推送到几台远程机器,而无需在远程机器上安装任何东西。

目的是cfengine在一组没有设置代理的机器上做一些像你会发现的工具,比如。这实际上可能是cfagent在一组现有远程机器上进行设置的好方法。

scripting ssh configuration bash

52
推荐指数
4
解决办法
8万
查看次数

停止从客户端打印 motd 的 ssh 登录?

我已经设置了 SSH 无密码设置,但是它会在登录时打印 MoTD。无论如何从客户端阻止这种情况发生?

我试过了,ssh -q但这不起作用。我不想使用~/.hushlogin也不想更改服务器设置。唯一可行的方法是使用>/dev/null 2>&1. 但是,如果确实存在问题,我不想忽略错误。即使这样做>/dev/null也不起作用,因为ssh似乎将 motd 打印到 stderr。

更新和推理我在 cron 中运行备份。除非发生错误,否则我不想收到 cron 电子邮件。但是,如果打印了 motd,我会一直收到一封电子邮件。

我想继续打印 motd,因为这具有法律含义。motd 说“禁止未经授权的访问”。你需要在那里有这样的声明,以合法地阻止人们访问它(就像一个禁止侵入的标志)。因此,我不想一直全面禁用它。

linux ssh bash

51
推荐指数
4
解决办法
9万
查看次数

bash:变量在读取循环结束时丢失值

我的一个 shell 脚本有问题。问了几个同事,他们都只是摇头(挠了挠头),所以我来这里是为了回答。

根据我的理解,下面的 shell 脚本应该打印“Count is 5”作为最后一行。除了它没有。它打印“计数为 0”。如果将“while read”替换为任何其他类型的循环,它就可以正常工作。这是脚本:

echo "1">input.data
回声“2”>>输入.数据
回声“3”>>输入.数据
echo "4">>input.data
回声“5”>>input.data

碳纳米管=0 

cat input.data | 阅读时;
做
  让 CNT++;
  echo "计数到 $CNT"
完毕 
echo "计数是 $CNT"

为什么会发生这种情况,我该如何预防?我已经在 Debian Lenny 和 Squeeze 中尝试过这个,结果相同(即 bash 3.2.39 和 bash 4.1.5。我完全承认不是一个 shell 脚本向导,所以任何指针都将不胜感激。

bash scope

51
推荐指数
5
解决办法
11万
查看次数

Bash find 命令详细输出

有没有办法告诉 bashfind命令输出它在做什么(详细模式)?

例如对于命令: find /media/1Tb/videos -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;输出:

Found /media/1Tb/videos/102, executing rm -rf /media/1Tb/videos/102
...
Run Code Online (Sandbox Code Playgroud)

linux bash find

51
推荐指数
3
解决办法
5万
查看次数

在 cron 中将 wget 输出管道传输到 /dev/null

我每 5 分钟在我的 crontab 中运行以下命令以保持 Phusion 乘客的存活。

*/5 * * * * wget mysite.com > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它会在站点 url 上执行 wget,将 STDOUT/STDERR 路由到 /dev/null。当我从命令行运行它时,它工作正常并且不会在我的主目录中生成 index.html 文件。

当它从 cron 运行时,它每五分钟创建一个新的 index.html 文件,给我留下大量我不想要的索引文件。

运行 cron 作业时我的语法不正确吗?从命令行它可以正常工作,但从 cron 它在我的主目录中生成一个 index.html 文件。

我确定我犯了一个简单的错误,如果有人能帮忙,我将不胜感激。

linux bash wget

48
推荐指数
4
解决办法
6万
查看次数

bash/sed/awk/etc 删除所有其他换行符

一个 bash 命令输出这个:

Runtime Name: vmhba2:C0:T3:L14
Group State: active
Runtime Name: vmhba3:C0:T0:L14
Group State: active unoptimized
Runtime Name: vmhba2:C0:T1:L14
Group State: active unoptimized
Runtime Name: vmhba3:C0:T3:L14
Group State: active
Runtime Name: vmhba2:C0:T2:L14
Group State: active
Run Code Online (Sandbox Code Playgroud)

我想把它用管道输送到某个东西上,使它看起来像这样:

Runtime Name: vmhba2:C0:T1:L14 Group State: active 
Runtime Name: vmhba3:C0:T3:L14 Group State: active unoptimized
Runtime Name: vmhba2:C0:T2:L14 Group State: active
[...]
Run Code Online (Sandbox Code Playgroud)

即删除所有其他换行符

我试过了,... |tr "\nGroup" " "但它删除了所有换行符并吃掉了其他一些字母。谢谢

bash awk sed

47
推荐指数
3
解决办法
3万
查看次数

当 systemd 监控的服务进入失败状态时获得通知

我需要在系统服务崩溃或挂起时发送网络消息(即进入失败状态;我使用 WatchdogSec= 监视挂起)。我注意到较新的 systemd 有 FailureAction=,但后来发现这不允许任意命令,而只是重新启动/关闭。

具体来说,我需要一种方法来在 systemd 检测到程序崩溃时发送一条网络消息,并在检测到程序挂起时发送另一条网络消息。

我希望有一个比“解析日志”更好的答案,而且我需要一些具有近乎即时响应时间的东西,所以我认为轮询方法不是很好;它应该是由事件发生触发的东西。

linux bash service systemd

47
推荐指数
2
解决办法
3万
查看次数

Cron:只在电子邮件中收到错误?

我最终通过一个 shell 脚本为我的数据设置了一个现实的备份计划,由 cron 以紧密的时间间隔处理。不幸的是,每次执行 CRON 时,我都会收到空电子邮件,而不仅仅是在出现问题时。

是否可以仅在出现问题时让 CRON 发送电子邮件,即。我TAR没有按预期执行?

这是目前我的 crontab 的设置方式;

0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com
Run Code Online (Sandbox Code Playgroud)

非常感谢!

shell bash schedule cron

46
推荐指数
4
解决办法
6万
查看次数

如何获取 .ssh/authorized_keys(2) 文件的所有指纹

有没有一种简单的方法来获取 .ssh/authorized_keys 中输入的所有指纹的列表?.ssh/authorized_keys2 文件?

ssh-keygen -l -f .ssh/authorized_keys 
Run Code Online (Sandbox Code Playgroud)

只会返回第一行/条目/公钥的指纹

用 awk 破解:

awk 'BEGIN { 
    while (getline < ".ssh/authorized_keys") {
        if ($1!~"ssh-(r|d)sa") {continue}
        print "Fingerprint for "$3
        system("echo " "\""$0"\"> /tmp/authorizedPublicKey.scan; \
            ssh-keygen -l -f /tmp/authorizedPublicKey.scan; \
            rm /tmp/authorizedPublicKey.scan"
        )
    }
}'
Run Code Online (Sandbox Code Playgroud)

但是有没有更简单的方法或我没有找到的 ssh 命令?

ssh bash awk ssh-keygen ssh-keys

46
推荐指数
4
解决办法
2万
查看次数

标签 统计

bash ×10

linux ×4

ssh ×4

awk ×2

ssh-keygen ×2

bashrc ×1

configuration ×1

cron ×1

find ×1

schedule ×1

scope ×1

scripting ×1

sed ×1

service ×1

shell ×1

ssh-keys ×1

systemd ×1

ubuntu ×1

wget ×1