ssh脚本连接远程服务器

ssh脚本连接远程服务器

使用Mac电脑连接远程服务器,我们主要使用的是shell+expect的方式连接,具体语法可以找资料学习。

连接方式:

ipContext    (ip文件,编写ip、password、user、port等信息)
read.sh       (shell脚本文件,用来读取写入的ip文件)
connection.sh (expect脚本文件,用来连接ip)

该方式连接不同的ip时只需要编写不同的ip文件即可

ip文件

username
ip
密码

shell脚本如下:

#!/bin/bash
filename=$1
if test -z "$filename"
then
  echo "error: 请输入文件名"
  exit 1
fi

arr=()
i=0
for line in $(cat $filename)
do
  arr[i]=$line
  i=`expr $i + 1`
done
user=${arr[0]}
ip=${arr[1]}
passwd=${arr[2]}

echo "connectiong..."

expect -f connection.sh $user $ip $passwd

exit

expect脚本

#!/usr/bin/expect
set timeout 10
set user [ lindex $argv 0 ]
set ip [ lindex $argv 1 ]
set passwd [ lindex $argv 2 ]
spawn ssh $user@$ip
expect {
   "(yes/no)?" { send "yes\r";exp_continue }
   "password:" {send -- $passwd\r"}
}
interact

使用方式

sh read.sh ipContext

注意:

expect文件内的interact可以改为expect eof 根据个人习惯

### 编写SSH脚本的方法 为了实现自动化操作,可以通过 `expect` 脚本来完成 SSH 的自动登录以及后续命令的执行。以下是基于提供的引用内容和专业知识编写的 SSH 自动化脚本示例。 #### 使用 Expect 实现 SSH 免密登录 Expect 是一种用于处理交互式程序的强大工具。下面是一个简单的 Expect 脚本示例,它能够自动连接远程服务器并通过密码验证: ```bash #!/usr/bin/expect set timeout 20 set user [lindex $argv 0] set host [lindex $argv 1] set password [lindex $argv 2] spawn ssh "$user@$host" expect { "*password:" { send "$password\r"; exp_continue } } interact ``` 上述脚本会尝试通过用户名、主机名和密码进行 SSH 连接[^2]。如果需要进一步扩展功能,可以加入更多的 expect 条件判断逻辑来应对不同的场景需求。 #### 批量 SSH 登录与命令执行 对于批量管理多台设备的情况,可以结合 Shell 和 Expect 技术创建更复杂的解决方案。例如,以下脚本实现了向多个目标机器发送相同命令的功能: ```bash #!/bin/bash SERVER_LIST="server_list.txt" while read server; do /path/to/auto_ssh_script.exp root ${server} 'your_password' "command_to_execute" done < "${SERVER_LIST}" ``` 这里假设有一个名为 `auto_ssh_script.exp` 的 Expect 文件负责具体的 SSH 操作过程;而 `server_list.txt` 则包含了所有待访问的目标地址列表[^3]。 #### 强制分配伪终端 (-t 参数) 当某些应用程序依赖于 TTY 存在才能正常工作时,则可能需要用到 `-t` 参数强制开启伪终端支持。比如运行图形界面应用或者菜单服务等特殊场合下非常有用[^4]: ```bash ssh -tt some_host bash --noprofile --norc ``` 以上例子展示了如何利用额外参数让远端环境更加贴近实际用户体验效果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值