shell实现SSH自动登陆

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell实现SSH自动登陆相关的知识,希望对你有一定的参考价值。

参考技术A [TOC]

注:需要执行权限,可通过 sudo chmod +x ./file_name.sh 添加

sh file_name.sh 就是指定了脚本解释器 /bin/sh 来解释执行脚本;常见的脚本解释器还有: /bin/bash 等,我们可以使用 ls -l /bin/*sh 命令来查看当前可用的脚本解释器;

这种方式不会像前两种方式一样fork一个子进程去执行脚本,而是使用当前shell环境执行。我们不必重启shell或者重新登录系统,就能使当前的更改生效。一般用于 .bashrc或者.bash_profile被修改的时候,

定义:我们写一个shell脚本时,总是习惯在最前面加上一行 #!/binbash ,它就是脚本的 shebang 。

作用:它指示了此脚本运行时的解释器,使用文件名直接执行shell脚本时,必须带上shebang。

使用:可以在shebang后面直接附加选项,执行时我们默认使用选项执行;

如 test.sh 的 shebang 为 #!/bin/sh -x ,那我们执行脚本时:

./test.sh hello 相当于: bin/sh -x ./test.sh hello ;

注意:在指定脚本解释器来执行脚本时,shebang会被指定的脚本解释器覆盖。

expect是一个能实现自动和交互式任务的解释器,它也能解释常见的shell语法命令,其特色在以下几个命令:

spawn command 命令会fork一个子进程去执行command命令,然后在此子进程中执行后面的命令;

它的一般用法为 expect "string" ,即期望获取到string字符串,可在在string字符串里使用 * 等通配符; string 与命令行返回的信息匹配后,expect会立刻向下执行脚本;

set timeout n 命令将expect命令的等待超时时间设置为n秒,在n秒内还没有获取到其期待的命令,expect 为false,脚本会继续向下执行;

一般用法为 send "string\r" , 向命令行输入一条信息, \r 表示输入回车;

创建脚本 touch aliyun_login_shell.sh ,内容如下:

执行 sudo chmod +x ./aliyun_login_shell.sh 命令给shell脚本添加执行权限;

运行 ./aliyun_login_shell.sh 命令,一键登陆成功!

优化一下:

脚本完成了,可是还是有些小瑕疵:

这里我们想到了linux的alias命令:

执行命令 vim ~./bash_profile ,在文件内部添加:

再使用 . ~./bash_profile 或 source ~./bash_profile

从此,我们无论在哪个目录,只要输入 alias_name 命令,回车,真正的一键登陆!

参考:

https://www.cnblogs.com/qiumingcheng/p/11544569.html

shell脚本ssh自动登陆服务器

#!/bin/sh
sshpass -p "your password" ssh [email protected]

注意:

需要先安装sshpass:

源码下载地址:http://sourceforge.net/projects/sshpass/

 tar -zxvf sshpass-1.05.tar.gz

cd sshpass-1.05

./configure

make && make install

安装完成后输入sshpass查看是否安装成功

 

以上是关于shell实现SSH自动登陆的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本ssh自动登陆服务器

shell脚本 expect 实现自动登陆

putty自带工具plink自动登陆ssh

编写脚本实现登陆远程主机

用shell和python实现FTP自动登陆然后上传和下载

在LINUX系统下,如何使用SHell脚本,SSH登陆上路由器