bash写一个配置etc/hosts的脚本
时间: 2024-05-01 12:17:51 浏览: 17
可以利用echo命令将配置信息写入/etc/hosts文件中,具体的脚本如下:
```
#!/bin/bash
# 要添加的配置信息
config="127.0.0.1\tlocalhost\n127.0.1.1\tubuntu\n"
# 将配置信息追加到/etc/hosts文件中
echo -e $config >> /etc/hosts
```
该脚本首先定义了要添加的配置信息,然后利用echo命令将其追加到/etc/hosts文件中。在执行脚本时,需要有sudo权限。
相关问题
提供一份检查服务器间/etc/hosts文件内容是否一致的shell脚本
以下是一个用于检查服务器间/etc/hosts文件内容是否一致的Shell脚本示例:
```shell
#!/bin/bash
# 定义要检查的服务器列表
servers=("server1" "server2" "server3")
# 定义要检查的文件路径
file_path="/etc/hosts"
# 逐个检查服务器的/etc/hosts文件内容
for server in "${servers[@]}"
do
echo "Checking /etc/hosts on $server..."
# 通过SSH连接到服务器并执行命令
output=$(ssh $server "cat $file_path")
# 检查输出是否一致
if [[ "$output" == "$expected_content" ]]; then
echo "Content is consistent on $server"
else
echo "Content is different on $server"
fi
done
```
请注意,上述示例中的`$expected_content`需要根据您的实际需求进行设置,例如将其设置为您期望的/etc/hosts文件内容。此外,确保您在运行脚本之前已经设置好了与目标服务器的SSH连接。
密码过期及密码复杂度、尝试登录多少次锁定登录多少秒这个配置涉及/etc/login.defs、/etc/pam.d/login、/etc/pam.d/system-auth这三个文件,编写yaml脚本,使用ansible配置所有主机的这三个文件
好的,您的第一个问题是关于密码过期及密码复杂度、尝试登录多少次锁定登录多少秒的配置,涉及/etc/login.defs、/etc/pam.d/login、/etc/pam.d/system-auth这三个文件。要编写yaml脚本,使用ansible配置所有主机的这三个文件。
为了实现这个需求,我们可以按照以下步骤操作:
1. 编写一个yaml脚本,指定要修改的文件路径和配置项。
2. 在yaml脚本中定义变量,以便将此脚本应用于所有主机。
3. 配置ansible服务器的ssh连接,允许连接到所有目标主机。
4. 运行ansible playbook,检查配置是否被正确应用于所有主机。
以下是一个简单的yaml脚本示例,用于配置/etc/login.defs、/etc/pam.d/login、/etc/pam.d/system-auth,以包括密码过期及密码复杂度、尝试登录多少次锁定登录多少秒的配置。
```yaml
---
- name: Configure password policies
hosts: all
become: yes
vars:
# Define the password policies you want to set
password_policy:
PASS_MAX_DAYS: 90
PASS_MIN_DAYS: 7
PASS_WARN_AGE: 14
PASS_MIN_LEN: 12
PASS_REMEMBERED: 5
FAIL_DELAY: 3
FAILLOG_ENAB: yes
FAIL_DELAY_SECS: 600
FAIL_LOCKOUT_COUNT: 3
# Define the files you want to modify
login_defs: /etc/login.defs
pam_login: /etc/pam.d/login
pam_system_auth: /etc/pam.d/system-auth
tasks:
- name: Configure login.defs
lineinfile:
path: "{{ login_defs }}"
regexp: '^{{ item.key }}\s'
line: "{{ item.key }}\t{{ item.value }}"
state: present
with_dict: "{{ password_policy }}"
notify: restart-login-service
- name: Configure pam login
template:
src: templates/login.j2
dest: "{{ pam_login }}"
notify: restart-login-service
- name: Configure pam system auth
template:
src: templates/system-auth.j2
dest: "{{ pam_system_auth }}"
notify: restart-login-service
handlers:
- name: restart-login-service
service:
name: login
state: restarted
```
在这个yaml脚本中,我们首先定义了一些变量,然后在任务中使用了这些变量。在实际操作中,您需要将这些变量替换为您自己的值。
任务中的第一个任务使用lineinfile模块来配置/etc/login.defs文件。该模块使用with_dict循环为每个密码策略设置一个新行。
第二个任务使用template模块将我们定义的login.j2模板复制到目标主机上的/etc/pam.d/login文件中。这个任务需要一个login.j2文件作为模板。您可以根据需要自定义这个模板。
第三个任务与第二个任务类似,它将我们定义的system-auth.j2模板复制到/etc/pam.d/login文件中。
最后一个区段定义了一个名为restart-login-service的处理程序。每当我们对这些文件进行更改时,这个处理程序都会重启login服务以使更改生效。
在运行此yaml脚本之前,您需要确保ansible服务器与所有目标主机都可以通过ssh进行连接,并且您已经在其中的/etc/ansible/hosts文件中配置了这些主机。
运行以下命令以运行这个yaml脚本:
```bash
ansible-playbook -i hosts configure-password-policies.yaml
```
这个命令将ansible操作与您的主机进行通信,并配置所有主机的密码策略。