ssh密码脚本
编写mssh.sh脚本
内容如下
1.
#!/usr/bin/expect
-f
2.
#auto
ssh
login
3.
set
timeout
30
4.
set
sshhost
[lindex
$argv
0]
5.
spawn
ssh
-llizongbo
-p13800
$sshhost
6.
expect
“password:”
7.
send
“lizongbo_618119\r”
8.
interact
给文件加上可执行权限
chmod
+x
./mssh.sh
如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行
chmod
700
./mssh.sh
测试成功:
./mssh.sh
618119.com
直接登录到了
618119.com
⑵ 在脚本中使用ssh时的几个注意事项
1. 超时设置
-o ConnectTimeout=3
2. 重定项标准输入到/dev/null
-n
当使用这样的形式时 (使用 key 认证):
while read line ; do ip=$(awk '{print $1}' < << $line ) ssh -n -o ConnectTimeout=3 $i uptime done < file
假如此时不使用 -n ,则只有第一行会被处理。
3. 批处理模式,在脚本中使用再合适不过(使用 key 认证)
-o BatchMode=yes
当 key 认证不成功时,有可能会弹出“密码认识”,从而影响脚本运行下去,此时可以打开 BatchMode模式。
4. 遇到未知主机:
-o StrictHostKeyChecking=no
当遇到未知的主机公钥时,自动接受key。
5. 糟遇远程主机连接后无响应:
当设置了 BatchMode 时 ServerAliveInterval 默认被设置成 300 秒(服务端无数据传回的持续时间)。
ServerAliveCountMax相当于是重试的次数,比如下面的例子,15秒 x 3 = 45 秒,即当 45 秒后,真正超时断开。
TCPKeepAlive打开时,便于发现网络的断开。当网络故障(比如路由器坏掉)或者远端开机、死机时,连接会主动断开,否则的话,将会等待相当一段时间后才会断开。
-o ServerAliveInterval=15
-o ServerAliveCountMax=3
-o TCPKeepAlive=yes
需要注意的是,这里的超时、无响应,仅是 ssh或者sshd无影响,假如是在远程上执行程序,程序无响应,则不能处理此时的超时,解决方法见《在Shell中实现异步》。
⑶ 如何用shell脚本实现SSH的远程登录
要带跳过输入密码的环节么?
如果你想每次链接的时候自己手动输入密码,那就参考这样写
#!/bin/bash
ip=$1
ssh 用户名@ip地址 -p端口号
保存后给执行权限,运行时在脚本后面直接跟一个IP地址
如果你想每次链接的时候自动跳过输入密码的环境,那就再网络下“ssh建立信任关系”,脚本依然还是这个脚本,只是登陆的时候做了互相信任的话,就不需要密码了
⑷ 如何用脚本添加ssh命令的密码
#!/usr/bin/expect
set pw pawword
spawn ssh 192.168.1.200
expect 'password: '
send "$pw\r"
expect '#'
send "exit\r"
expect eof
chmod +x ssh.sh
./ssh.sh 试试呢 哈哈
⑸ 求一个批量ssh登录linux服务器,修改配置文件的脚本参考一下。
1、可以配置无密码访问或者用sshpass在shell中存密码
2、实例
ip.txt包含ip列表,每行一个ip
test.sh保护修改配置的命令或者直接修改好,复制到远程指定路径。
3、代码
#!/bin/sh
for ip in `cat ip.txt`; do
echo ${ip};
scp -P22 test.sh root@${ip}:/opt;
ssh -p22 root@$ip "cd /opt;./test.sh;"
done
exit 0;
