shell脚本在本机上开启多个连接远程机器的终端并且自动输入密码

时间: 2024-03-12 19:50:15 浏览: 12
您可以使用expect工具编写一个脚本来实现这一功能。以下是一个例子: ```bash #!/usr/bin/expect set user username set password yourpassword spawn ssh $user@remotehost1 expect "password:" send "$password\r" interact spawn ssh $user@remotehost2 expect "password:" send "$password\r" interact # add more remote hosts as needed ``` 将上面的代码保存为一个文件,例如“connect.sh”,然后在终端中运行“expect connect.sh”即可。这将启动多个SSH连接,并自动输入密码。请注意,这种做法是不安全的,因为密码是明文存储在脚本中的。建议使用SSH密钥认证来替代密码认证。
相关问题

shell脚本在本机上开启多个连接远程机器的终端

您可以使用 SSH 命令在本机上开启多个连接远程机器的终端。以下是一个示例脚本: ```shell #!/bin/bash # 定义远程机器的 IP 地址和用户名 remote_ip="192.168.1.100" remote_user="user" # 循环开启多个终端连接远程机器 for i in {1..5} do gnome-terminal -e "ssh $remote_user@$remote_ip" done ``` 在上面的脚本中,我们使用了 `gnome-terminal` 命令来开启终端,并使用 `ssh` 命令连接远程机器。您可以根据需要修改远程机器的 IP 地址和用户名,并在循环中指定要开启的终端数量。

shell脚本 批量推送公钥

### 回答1: 批量推送公钥可以通过使用 SSH 的 authorized_keys 文件来实现。下面是一个示例脚本,可以将本地的公钥推送到多个远程主机上: ```bash #!/bin/bash # 设置需要推送的公钥文件路径 pubkey_path=~/.ssh/id_rsa.pub # 读取需要推送的主机列表 read -p "Enter remote hosts (separated by space): " hosts # 读取需要推送的用户 read -p "Enter remote user: " user # 循环遍历主机列表,将公钥复制到 authorized_keys 文件 for host in $hosts; do ssh $user@$host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && cat >> ~/.ssh/authorized_keys" < $pubkey_path done ``` 在运行脚本时,会提示输入需要推送公钥的远程主机列表和远程用户,然后将本地的公钥文件复制到远程主机的 authorized_keys 文件中。注意,脚本需要在本地已经存在公钥文件,并且需要在远程主机上安装了 SSH 服务。 ### 回答2: 批量推送公钥是一种在多个远程服务器上自动化部署公钥的方法,可以方便地实现无需人工干预的SSH远程登录。 在Shell脚本中,我们可以使用以下的步骤来批量推送公钥: 1. 在脚本中定义一个包含远程服务器IP地址的数组,例如: ``` servers=("192.168.1.101" "192.168.1.102" "192.168.1.103") ``` 2. 使用一个循环结构来遍历数组中的IP地址,并执行以下操作: a. 生成公钥对(如果不存在的话): ``` if [ ! -f ~/.ssh/id_rsa.pub ]; then ssh-keygen -t rsa -q -N '' -f ~/.ssh/id_rsa fi ``` b. 使用ssh-copy-id命令将公钥拷贝到远程服务器: ``` ssh-copy-id user@$server ``` 其中,`user`是远程服务器登录的用户名,`$server`是当前遍历到的IP地址。 3. 将以上代码保存为一个Shell脚本文件(例如`push_keys.sh`),并添加执行权限。 4. 在终端中执行Shell脚本: ``` ./push_keys.sh ``` 这样,脚本将会自动遍历数组中的每个IP地址,生成并推送公钥到对应的远程服务器上。 需要注意的是,在执行ssh-copy-id命令时,可能会提示输入远程服务器的登录密码。为了避免这个问题,可以事先使用SSH Agent来管理私钥,或者在远程服务器上配置免密码登录。 希望以上回答对您有帮助! ### 回答3: Shell脚本批量推送公钥是一种方便快捷的方式,可以帮助用户在多台远程服务器上进行公钥的部署。下面是一个简单的Shell脚本示例: ``` #!/bin/bash # 指定要推送的公钥文件路径 public_key_file="path_to_public_key.pub" # 定义要连接的远程服务器列表 remote_servers=("server1" "server2" "server3") # 循环遍历远程服务器列表 for remote_server in "${remote_servers[@]}" do # 使用ssh-copy-id命令将公钥推送到远程服务器 ssh-copy-id -i $public_key_file $remote_server # 检查推送是否成功 if [ $? -eq 0 ] then echo "公钥已成功推送到服务器 $remote_server" else echo "公钥推送失败到服务器 $remote_server" fi done ``` 以上脚本假设您已经在本地生成了一个公钥文件,并且将路径存储在`public_key_file`变量中。您需要将`remote_servers`变量替换为您要推送公钥的实际远程服务器列表。 脚本中使用的`ssh-copy-id`命令可以将公钥复制到远程服务器的`~/.ssh/authorized_keys`文件中,完成公钥部署。在每个循环迭代中,脚本会检查命令的返回值来确定公钥是否成功推送到远程服务器。 使用这个Shell脚本,您可以轻松地在多台远程服务器上批量推送公钥,提高工作效率并加强服务器安全性。

相关推荐

最新推荐

recommend-type

Shell脚本实现自动输入密码登录服务器

主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下
recommend-type

shell脚本实现同时多台远程主机执行命令的代码分享

主要给大家介绍了关于shell脚本实现同时多台远程主机执行命令的方法,文中给出了详细的代码示例,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
recommend-type

利用Shell脚本实现远程MySQL自动查询

下面这个脚本是一个简单用来执行远程数据库查询的命令,相信大家都能看得懂,这对于有些需要每天自动检查数据库或是执行某些语句的兄弟,是很有帮助的,只要稍加修改就可以 代码如下:#!/bin/shHOST=192.168.5.40...
recommend-type

ubuntu中编写shell脚本开机自动启动(推荐)

主要介绍了ubuntu中编写shell脚本开机自动启动,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Shell脚本实现自动修改IP、主机名等功能分享

主要介绍了Shell脚本实现自动修改IP、主机名等功能分享,本文直接给出实现代码,需要的朋友可以参考下
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

numpy数组索引与切片技巧

![numpy数组索引与切片技巧](https://img-blog.csdnimg.cn/f610d87ed50745d2b7052af887da2d0d.png) # 2.1 整数索引 整数索引是 NumPy 数组中索引元素的最简单方法。它允许您使用整数来访问数组中的特定元素或子数组。 ### 2.1.1 单个元素索引 单个元素索引使用一个整数来访问数组中的单个元素。语法为: ```python array[index] ``` 其中: * `array` 是要索引的 NumPy 数组。 * `index` 是要访问的元素的索引。 例如: ```python import
recommend-type

javaboolean类型怎么使用

Java中的boolean类型表示真或假,只有两个可能的值。在Java中,boolean类型的变量可以被初始化为false或true。可以使用以下语法来声明和初始化一个boolean类型的变量: ``` boolean myBoolean = true; ``` 在Java中,boolean类型的变量通常用于控制流程和条件测试,例如: ``` if (myBoolean) { // do something if myBoolean is true } else { // do something if myBoolean is false } ``` 除了if语句之外
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。