使用sed显示/etc/ssh/sshd_config文件中所有不是空白的行。
时间: 2023-09-16 19:08:53 浏览: 130
可以使用如下的sed命令来显示/etc/ssh/sshd_config文件中所有不是空白的行:
```
sed -n '/\S/p' /etc/ssh/sshd_config
```
解释一下这个命令:
- `-n` 参数表示只输出匹配的行,不输出其他行。
- `\S` 是一个正则表达式,表示匹配非空白字符。
- `p` 命令表示输出匹配的行。
- `/pattern/` 是一个正则表达式匹配模式,用来匹配文件中的行。
所以,上述命令就是匹配所有不是空白字符的行,并输出它们。
相关问题
逐条注释 ``` if grep -q "Protocol" /etc/ssh/sshd_config then sed -i '/Protocol/s/^#//' /etc/ssh/sshd_config sed -i "s/Protocol.*/Protocol 2/g" /etc/ssh/sshd_config else echo 'Protocol 2' >> /etc/ssh/sshd_config fi if grep -q "PrintMotd" /etc/ssh/sshd_config then sed -i '/PrintMotd/s/^#//' /etc/ssh/sshd_config sed -i "s/PrintMotd.*/PrintMotd yes/g" /etc/ssh/sshd_config else echo "PrintMotd yes" >> /etc/ssh/sshd_config fi service sshd restart systemctl restart sshd.service ```
这段脚本的作用是修改/etc/ssh/sshd_config文件中的SSH配置,并重新启动SSH服务。具体解释如下:
```shell
if grep -q "Protocol" /etc/ssh/sshd_config
then
sed -i '/Protocol/s/^#//' /etc/ssh/sshd_config
sed -i "s/Protocol.*/Protocol 2/g" /etc/ssh/sshd_config
else
echo 'Protocol 2' >> /etc/ssh/sshd_config
fi
```
- 检查/etc/ssh/sshd_config文件中是否存在"Protocol"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 然后使用sed命令将该行的值修改为"Protocol 2",即设置SSH协议版本为2。
- 如果不存在,则在文件末尾添加一行"Protocol 2"。
```shell
if grep -q "PrintMotd" /etc/ssh/sshd_config
then
sed -i '/PrintMotd/s/^#//' /etc/ssh/sshd_config
sed -i "s/PrintMotd.*/PrintMotd yes/g" /etc/ssh/sshd_config
else
echo "PrintMotd yes" >> /etc/ssh/sshd_config
fi
```
- 检查/etc/ssh/sshd_config文件中是否存在"PrintMotd"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 然后使用sed命令将该行的值修改为"PrintMotd yes",即启用SSH登录时显示欢迎信息。
- 如果不存在,则在文件末尾添加一行"PrintMotd yes"。
```shell
service sshd restart
systemctl restart sshd.service
```
- 重新启动SSH服务,使配置生效。这两行命令可能根据Linux发行版的不同而有所区别,用于重启SSH服务。
将当前shell脚本承载业务使用python实现出来 ··· sh /srv/root_password.sh getenforce#查看SELinux 安全机制 setenforce 0#将 SELinux 的执行模式从强制模式(Enforcing)切换为宽松模式(Permissive) cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.old.service sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\/usr\/sbin\/sshd/\/usr\/local\/sbin\/sshd/g}' /usr/lib/systemd/system/sshd.service#将文件中以"Type="开头的行替换为"Type=simple";包含"ExecStart="的行中,将"/usr/sbin/sshd"替换为"/usr/local/sbin/sshd" sed -i "s/GSSAPIAuthentication/#GSSAPIAuthentication/" /etc/ssh/sshd_config#将/etc/ssh/sshd_config文件中的"GSSAPIAuthentication"替换为"#GSSAPIAuthentication" sed -i "s/GSSAPICleanupCredentials/#GSSAPICleanupCredentials/" /etc/ssh/sshd_config sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/" /etc/ssh/sshd_config sed -i "s/#UsePAM yes/UsePAM yes/" /etc/ssh/sshd_config chmod 600 /etc/ssh/ssh_host_rsa_key chmod 600 /etc/ssh/ssh_host_ecdsa_key chmod 600 /etc/ssh/ssh_host_ed25519_key ···
下面是将您提供的Shell脚本转换为Python代码的示例:
```python
import subprocess
# 执行命令的函数
def run_command(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output, _ = process.communicate()
return output.decode().strip()
# 执行脚本中的命令
run_command("sh /srv/root_password.sh")
run_command("setenforce 0")
run_command("cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.old.service")
run_command("sed -i -e 's/^Type=.*/Type=simple/g' -e '/ExecStart=/{s/\\/usr\\/sbin\\/sshd/\\/usr\\/local\\/sbin\\/sshd/g}' /usr/lib/systemd/system/sshd.service")
run_command("sed -i 's/GSSAPIAuthentication/#GSSAPIAuthentication/' /etc/ssh/sshd_config")
run_command("sed -i 's/GSSAPICleanupCredentials/#GSSAPICleanupCredentials/' /etc/ssh/sshd_config")
run_command("sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config")
run_command("sed -i 's/#UsePAM yes/UsePAM yes/' /etc/ssh/sshd_config")
run_command("chmod 600 /etc/ssh/ssh_host_rsa_key")
run_command("chmod 600 /etc/ssh/ssh_host_ecdsa_key")
run_command("chmod 600 /etc/ssh/ssh_host_ed25519_key")
```
上述代码使用`subprocess`模块执行Shell命令,并将其转换为Python函数`run_command()`。然后,按照原始脚本中的顺序调用这些命令。
请注意,Python代码的执行结果可能会与直接在Shell中运行命令时略有不同。如果有任何问题,请及时反馈。
阅读全文