`
macken
  • 浏览: 349169 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell脚本-自动打通服务器ssh

 
阅读更多

使用了expect来处理交互内容,代码如下

#!/bin/sh
function usage() {
        cat << EOF
        Usage ssh_connect ip [username] [password]
EOF
}

auto_login_ssh() {
        expect -c "set timeout -1;
        spawn ssh $user@$ip
        expect {
        yes/no {
                send \"yes\n\"
                expect password
                send \"$pass\n\"
        }
        password {send \"$pass\n\"}
        }
        interact;
        "
}


scp_file(){
        expect -c "
        spawn scp $pub $user@$ip:~
        expect {
        yes/no {
                send \"yes\n\"
                expect \"password\"
                send \"$pass\n\"
                }
        password {send \"$pass\n\"}
        }
        send \" cat ~/id_dsa.put >> ~/.ssh/authorized_keys\"
        interact;
        "
}
ssh_cmd() {
        echo $1
        expect -c "
        spawn ssh $user@$ip 
        expect {
        yes/no {
                send \"yes\n\"
                expect password
                send \"$pass\n\"
        }
        password {send \"$pass\n\"}
        }
        expect ]
        send \"$1\n\"
        expect ]
        send \"exit\n\"
        expect eof

        "
}

ip=$1
user=root
pass=pwd
if [ ! -z $2 ];then
        user=$2
fi

if [ ! -z $3 ];then
        pass=$3
fi


cd ~

sshpath=$PWD"/.ssh"
if [ ! -d $sshpath ];then
        mkdir $sshpath
fi

pub=$sshpath"/id_dsa.pub"
echo $pub

if [ ! -f $pub ]; then
        ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
fi
#auto_login_ssh

scp_file
ssh_cmd "cat ~/id_dsa.pub >> ~/.ssh/authorized_keys"

 

分享到:
评论

相关推荐

    SSH免密登录脚本,免密登陆环境脚本------ssh_no_pass.sh

    SSH免密登录脚本,免密登陆环境脚本------ssh_no_pass.sh,centos7,ssh秘钥

    shell脚本远程启动其他服务器的tomcat传输文件自动登录判断启动停止

    这个"shell脚本远程启动其他服务器的tomcat传输文件自动登录判断启动停止"的方案,就是一种典型的自动化运维实践,它结合了多个核心工具和技术,包括shell脚本、expect、ssh以及scp,用于实现远程服务器管理与文件...

    ssh-shell-spring-boot:ssh上的Spring Boot应用程序中的Spring Shell

    入门相依性&lt; dependency&gt; &lt; groupId&gt;com.github.fonimus&lt;/ groupId&gt; &lt; artifactId&gt;ssh-shell-spring-boot-starter&lt;/ artifactId&gt;&lt;/ dependency&gt; 注意:自动配置SshShellAutoConfiguration (默认情况下处于活动...

    shell脚本--bigdata.sh

    大数据集群管理脚本

    shell脚本-从入门到精通

    shell脚本-从入门到精通,适用于初学者,不了解shell脚本的同志。

    通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器.doc

    "通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器" 本文将介绍如何使用Shell脚本将Gitlab备份文件自动定时复制到远程服务器上,并对远程服务器上的Gitlab备份文件进行定时清理。 知识点一:SSH密钥配对 ...

    用于shell脚本无交互的ssh自动登陆(转载)

    出于安全考虑,SSH在连接远程主机时会要求输入密码,但在脚本自动化场景中,这种交互式输入密码的方式是不可接受的。为了解决这一问题,这篇博文介绍了如何使用expect工具实现shell脚本中的SSH无交互自动登录。 ...

    shell脚本--restart_all.sh

    重启服务器常用环境,redis,nginx,kibana,es

    shell脚本实现ssh-copy-id批量自动发送公钥到远程主机

    本文将详细讲解如何使用shell脚本来批量执行`ssh-copy-id`,以提高效率。 ### 需求 批量自动化地将本地的SSH公钥发送到一系列远程主机。这在管理大量服务器或集群时非常有用,避免了手动逐个配置的繁琐过程。 ### ...

    centos7 ssh免密登录自动化配置脚本(ps:已测试过)

    总的来说,通过shell和expect脚本实现SSH免密登录自动化配置,可以显著提高运维效率,降低人为错误,尤其适用于大规模的服务器集群管理。不过,这种自动化也带来了一定的安全风险,因此必须谨慎使用,确保只有授权的...

    shell教程-大量例子

    shell教程,包含大量的小例子,脚本信息,还有一些技巧。

    shell脚本比较两台服务器目录及文件是否一致

    ### Shell脚本比较两台服务器目录及文件是否一致 在IT运维工作中,经常需要对比不同服务器上的文件或目录是否一致,特别是在对生产环境和测试环境进行对比时尤为重要。本文将详细解析一个用于比较两台服务器目录及...

    shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率

    总的来说,通过学习和实践这样的Shell脚本,你可以有效地自动化监控远程服务器的关键性能指标,从而提高IT运维的效率和响应速度。这个过程不仅涉及到了Shell脚本编程,还涉及到对SNMP协议的理解和应用,对于提升IT...

    通过shell脚本执行scp和ssh命令

    通过shell脚本执行scp和ssh命令

    xshell ssh自动登录并执行命令脚本.rar

    本压缩包“xshell ssh自动登录并执行命令脚本.rar”提供了一种自动化的方式,通过Xshell自动连接到SSH服务器并执行预设的命令脚本,极大地节省了手动操作的时间。 首先,我们需要了解SSH(Secure Shell),这是一种...

    109个shell脚本合集.pdf

    Shell脚本会自动检测到攻击IP,并将其加入到防火墙规则中,以阻止攻击。 2. Linux系统发送告警脚本 这个脚本可以在Linux系统中发送告警邮件,通知管理员系统中的异常情况。我们使用mailx命令来发送邮件,并使用...

    批量打通SSH脚本

    批量打通SSH脚本的目的是为了自动化处理多个服务器的SSH连接,提高运维效率。在本案例中,我们将使用`expect`和`python`这两个工具来实现这个功能。 `expect`是一个脚本语言,它扩展了Tcl,主要用于自动化交互式的...

    Go-sshkeys-获取ssh服务器的所有ssh公钥

    "Go-sshkeys-获取ssh服务器的所有ssh公钥"项目就是这样一个例子,它提供了一个用Go语言编写的工具,可以方便地获取SSH服务器上的所有SSH公钥。 SSH公钥是SSH认证机制的一部分,用于实现无密码登录或者加强服务器...

    shell脚本合集--大量注释

    在Shell脚本中,我们可以组合各种命令,实现自动化任务。了解基本的Shell语法,如变量定义、条件语句(if-else)、循环(for, while)以及函数定义,是编写脚本的前提。 2. **Nginx部署** Nginx是一款高性能的HTTP...

    shell脚本编程100例

    本书《shell脚本编程100例》为读者提供了100个实战性的shell脚本编程实例,涵盖了检测网段主机状态、猜数字游戏、打印乘法口诀、使用rsync备份数据、切割Nginx日志、监控服务端口、使用mtime删除历史文件或日志文件...

Global site tag (gtag.js) - Google Analytics