SSH脚本 登录后去除登录的欢迎提示
四月 13, 2024
1865
问题描述
在编写脚本SSH登录服务器并输出操作到日志文件时,SSH登录成功的欢迎提示也会被写入日志文件中,其实时可以去掉的。
- 登录脚本
1 | ssh -q $remote_host >>$log_file 2>&1 <<EOF |
- 日志输出
1 | Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-109-generic x86_64) |
可以看出,虽然不影响脚本的实际功能,但是日志记录会记录大量无用的信息。
快速解决
1. 登录脚本添加 -t bash
1 | ssh -q $remote_host -t bash >>$log_file 2>&1 <<EOF |
其中 -t bash
选项的作用是告诉 SSH 在建立连接后立即启动一个交互式的 Bash Shell,使得用户可以在远程主机上执行命令和进行交互。
输出日志
1 | 登录成功,开始执行服务器操作... |
2. 解释 -t bash
说大白话就是指定SSH 登录成功之后使用 shell 为 bash,所以改为 -t sh
也是一样,知识使用的 shell 变成了 sh,为了演示,我们修改登录脚本如下;
1 | ssh -q $remote_host -t bash >>$log_file 2>&1 <<EOF |
对应的日志输出一下:
1 | 登录成功,当前使用的 SHELL 为 /bin/bash |
再把登录脚本修改为 sh 如下:
1 | ssh -q $remote_host -t sh >>$log_file 2>&1 <<EOF |
1 | 登录成功,当前使用的 SHELL 为 /bin/sh |
3. 欢迎提示消失的原因
欢迎提示的根源
首先欢迎提示词其实是写在 /etc/profile
等一下了配置文件中的,并不是直接在 /etc/profile
,而是它会再调用其他的配置文件,其他配置文件内部就有输出欢迎内容代码。
因为 SSH 登录成功之后,SHELL 都会一直加载 /etc/profile
、~/.profile
等配置文件,其中 ~/.profile
内部又会调用 ~/.bashrc
, /etc/profile
内部也会调用 /etc/bash.bashrc
。
添加-t bash
的变化
虽然添加 -t bash
主要是为了指定使用的 Shell,但是也会改变 SHELL 调用配置脚本的规则改变(具体的变化没有研究和验证),比如指定 -t bash
后,~/.profile
将不会被加载,而是直接加载 ~/.bashrc
。/etc
目录下的配置文件规则也改变了最终导致输出欢迎提示的配置脚本没有执行,所以就看不到欢迎提示了。
- 本文作者:scwang90
- 本文链接:https://blog.scwang90.cn/2024/04/13/ssh-script-hello/index.html
- 版权声明:本分享所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!