在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?

简介: 在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?

在Linux中,使用Shell脚本收集多台主机的当前时间并将其写入一个文件是一个常见的任务。下面是一个详细的步骤说明,包括如何设置SSH密钥认证(以避免手动输入密码)以及编写和执行Shell脚本。

1. 设置SSH密钥认证

为了避免在脚本执行过程中需要手动输入密码,你可以使用SSH密钥认证。这意味着你需要在本地机器上生成一个SSH密钥对,并将公钥分发到每台远程主机上。

  1. 生成SSH密钥对

在本地机器上执行以下命令生成SSH密钥对:

ssh-keygen -t rsa

按照提示操作,通常你可以选择不设置密码短语(passphrase)以简化自动化过程。

  1. 分发公钥到远程主机

对于每台远程主机,你需要将公钥(通常位于~/.ssh/id_rsa.pub)添加到其~/.ssh/authorized_keys文件中。你可以使用ssh-copy-id命令来自动完成这个过程:

ssh-copy-id user@remote_host

user替换为远程主机的用户名,remote_host替换为远程主机的IP地址或主机名。对每台主机重复此操作。

2. 编写Shell脚本

接下来,你需要编写一个Shell脚本来收集时间并写入文件。

  1. 创建脚本文件

使用文本编辑器创建一个新的Shell脚本文件,例如collect_times.sh

nano collect_times.sh
  1. 编写脚本内容

在脚本文件中,输入以下内容:

#!/bin/bash  
# 定义主机列表  
HOSTS=("host1" "host2" "host3" "host4" "host5" "host6" "host7" "host8" "host9" "host10")  
# 定义输出文件路径  
OUTPUT_FILE="times.txt"
# 清空或创建输出文件  
> "$OUTPUT_FILE"
# 遍历主机列表并收集时间  
for HOST in "${HOSTS[@]}"; do
# 使用ssh获取主机的当前时间,并追加到输出文件  
echo "Time from $HOST: $(ssh $HOST date)" >> "$OUTPUT_FILE"
done
echo "Times collected and saved to $OUTPUT_FILE"

在这个脚本中,HOSTS数组包含了你要收集时间的主机列表。OUTPUT_FILE变量指定了输出文件的路径。脚本会遍历每台主机,使用ssh命令获取当前时间,并将结果追加到输出文件中。

  1. 保存并退出编辑器

nano中,按Ctrl + O保存文件,然后按Ctrl + X退出。

  1. 给脚本执行权限

在终端中,为脚本文件添加执行权限:

chmod +x collect_times.sh
3. 执行Shell脚本

现在你可以执行脚本以收集时间并将其写入文件。

./collect_times.sh

脚本会依次连接到每台主机,获取当前时间,并将结果追加到times.txt文件中。每个主机的时间前面都会加上对应的主机名。

4. 查看结果

执行完脚本后,你可以使用cat命令查看times.txt文件的内容,以验证时间是否已成功收集并写入文件。

cat times.txt

这个文件现在应该包含了从每台主机收集的当前时间信息。

综上所述,这个脚本假设你已经正确设置了SSH密钥认证,并且每台主机都允许你从执行脚本的机器进行无密码登录。如果某些主机不可用或SSH连接失败,脚本可能会显示错误信息。你可以根据需要添加额外的错误处理逻辑来增强脚本的健壮性。

相关文章
|
4月前
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
2月前
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
398 13
|
3月前
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
133 16
|
3月前
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
57 4
|
4月前
|
Linux
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
125 28
|
4月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
606 12
|
4月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
122 4
|
4月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
266 3
|
5月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
421 25
|
5月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
90 18

热门文章

最新文章