use*_*544 11 linux bash shell ubuntu sed
是否有更多的DRY方式来编写以下命令(将它们放在bash shell脚本中):
sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^#PermitEmptyPasswords yes/PermitEmptyPasswords no/' /etc/ssh/sshd_config
sudo sed -i 's/PermitEmptyPasswords yes/PermitEmptyPasswords no/' /etc/ssh/sshd_config
sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
sudo sed -i 's/X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)
dev*_*ull 12
由于要匹配的模式类似,您可以使用4个字符串的替换并捕获它.使#
字符串的开头可选.
以下将这些组合成一个:
sed -i -r 's/^#?(PermitRootLogin|PermitEmptyPasswords|PasswordAuthentication|X11Forwarding) yes/\1 no/' /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)
如果您的版本sed
不支持扩展正则表达式,您可以说:
sed -i 's/^#\{0,1\}\(PermitRootLogin\|PermitEmptyPasswords\|PasswordAuthentication\|X11Forwarding\) yes/\1 no/' /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)
Jon*_*ler 10
-e 'sed-command'
在单个调用中使用多个参数sed
:
sudo sed -i.bak \
-e 's/^#PermitRootLogin yes/PermitRootLogin no/' \
-e 's/PermitRootLogin yes/PermitRootLogin no/' \
-e 's/^#PermitEmptyPasswords yes/PermitEmptyPasswords no/' \
-e 's/PermitEmptyPasswords yes/PermitEmptyPasswords no/' \
-e 's/^#PasswordAuthentication yes/PasswordAuthentication no/' \
-e 's/PasswordAuthentication yes/PasswordAuthentication no/' \
-e 's/^#X11Forwarding yes/X11Forwarding no/' \
-e 's/X11Forwarding yes/X11Forwarding no/' \
/etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)
或者创建一个脚本文件sed.script
,其中包含以下命令:
s/^#PermitRootLogin yes/PermitRootLogin no/
s/PermitRootLogin yes/PermitRootLogin no/
s/^#PermitEmptyPasswords yes/PermitEmptyPasswords no/
s/PermitEmptyPasswords yes/PermitEmptyPasswords no/
s/^#PasswordAuthentication yes/PasswordAuthentication no/
s/PasswordAuthentication yes/PasswordAuthentication no/
s/^#X11Forwarding yes/X11Forwarding no/
s/X11Forwarding yes/X11Forwarding no/
Run Code Online (Sandbox Code Playgroud)
然后sed
使用该文件运行:
sudo sed -i.bak -f sed.script /etc/ssh/sshconfig
Run Code Online (Sandbox Code Playgroud)
我已经为该-i
选项添加了备份扩展.如果您编辑主要配置文件而不先制作备份副本,那么您就比我更勇敢!(如果你在Mac OS X或BSD上工作也是必要的; sed
那里需要扩展名-i
.)
归档时间: |
|
查看次数: |
2381 次 |
最近记录: |