Linux使用Except实现自动登录

Linux使用Except实现自动登录

在实际项目中,需要经常登录不同的服务器,这样的频繁的登录操作每次都需要输入密码,每次这样的输入非常的烦人,如果有个脚本做这个事情就好多了,在网上发现Linux有个Except可以实现这个功能,这个好东西简直拯救了一大票懒人~

Except主要进行自动化的交互,Except能够模拟用户的输入,也可以读取标准输出,这非常适合需要用户输入的场景。这里假设我有三台机器,机器信息假设如下所示,我们主要的登录脚本放在 l o g i n . s h login.sh login.sh 文件中,下面这个是我们的自动登录脚本,我们把机器信息和登录功能分独立开来

#!/bin/bash

if [ "$1" == "dev" ];then
	echo "ssh -l WoDeXiaoKeAi 10.252.12.90"
	./login.sh WoDeXiaoKeAi 10.152.12.90 love@@2019++YOU@@_+haha  # 这里的用户名和密码都是示例,瞎写的,哈哈
fi

if [ "$1" == "test" -o "$1" == "middle" ];then
	echo "ssh -l WoDeXiaoKeAi 10.252.12.91"
	./login.sh WoDeXiaoKeAi 10.152.12.91 love@@2019++YOU@@_+haha
fi

if [ "$1" == "online"];then
	echo "ssh -l WoDeXiaoKeAi 10.252.12.92"
	./login.sh WoDeXiaoKeAi 10.152.12.92 love@@2019++YOU@@_+haha
fi

主要完成登录信息在 l o g i n . s h login.sh login.sh 里面,对于第一次连接,可能存在需要手动输入 y e s / n o yes/no yes/no 的情况,那么脚本需要兼容这种情况,详细脚本如下。但是在使用这个脚本之前,需要确保机器已经安装了expect、spawn等命令。关于各个关键字的含义可以看下面的参考网页

#!/usr/bin/expect 

set timeout 3                      
set username [lindex $argv 0]
set ip [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh -l $username $ip

expect {
    "yes/no" {send "yes\r";exp_continue}
    "*password*" {send "$password\r";}
}

interact
参考
  1. Linux Expect 简介和使用实例
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要判断 Linux 服务器是否可以登录,可以使用 `paramiko` 库来实现 SSH 连接并进行身份验证。以下是一个示例: ```python import paramiko def check_ssh_connection(hostname, username, password): try: # 创建 SSH 客户端对象 client = paramiko.SSHClient() # 自动添加主机密钥 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 client.connect(hostname, username=username, password=password) # 关闭连接 client.close() return True except paramiko.AuthenticationException: print(f"无法使用提供的用户名和密码登录到服务器 {hostname}") except paramiko.SSHException as ssh_exception: print(f"SSH 连接错误: {ssh_exception}") except Exception as e: print(f"发生错误: {e}") return False # 调用函数来判断是否可以登录 can_login = check_ssh_connection("服务器地址", "用户名", "密码") if can_login: print("可以登录") else: print("无法登录") ``` 在上面的示例中,我们定义了一个 `check_ssh_connection` 函数,它接受服务器地址、用户名和密码作为参数。函数中使用 `paramiko` 库创建一个 SSH 客户端对象,并尝试连接服务器并进行身份验证。如果连接成功,则返回 `True`,否则返回 `False`。在主程序中,我们调用该函数并根据返回结果打印相应的提示信息。 请确保将 "服务器地址"、"用户名" 和 "密码" 替换为实际的服务器信息。如果可以登录,将输出 "可以登录";如果无法登录,将输出 "无法登录"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值