linux自动交互工具expect,tcl安装,以及自动互信脚本

工作中需要对几十台服务器做自动互信,无意中发现expect命令,研究一番。

在网上找了许多资料也没有安装成功,摸索着总算成功了。现分享如下。

expect命令在自动交互中很好用。

系统:虚拟机fedora14,32位。
[root@Linux ~]# uname -a
Linux Linux 2.6.35.6-45.fc14.i686 #1 SMP Mon Oct 18 23:56:17 UTC 2010 i686 i686 i386 GNU/Linux
安装包:
-rw-r--r--.  1 root  root   525572 Aug  5 19:22 expect-5.43.0.tar.gz
-rw-r--r--.  1 root  root  3641017 Jul 23 13:28 tcl8.4.16-src.tar.gz
安装步骤:
解压安装tcl:
tar zxvf tcl8.4.16-src.tar.gz;
[root@Linux ~]# cd tcl8.4.16/unix/
./configure
make
make install
cp tclUnixPort.h ../generic/

解压安装expect:
tar zxvf expect-5.43.0.tar.gz;
[root@Linux ~]# cd expect-5.43
[root@Linux expect-5.43]# ./configure --with-tcl=/usr/local/lib/ --with-tclinclude=/usr/log/tcl8.4.16/generic  --with-x=no
上面配置这句是关键。
按照自己的tcl安装位置修改tcl=/usr/local/lib/ 
修改tclinclude=/root/tcl8.4.16/generic   这个目录是上面安装tcl文件夹的目录。
make
make install
--建立连接。
ln -s  /usr/local/bin/expect /usr/bin/expect 
--定义别名。使用ep代替expect。
echo "alias ep='expect'" >>/root/.bashrc

本步骤也在linux redhat5.5  64位系统中安装成功。
[root@HN509-AQ-WEB log]# uname -a
Linux HN509-AQ-WEB 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

安装包以及互信脚本详细地址:

http://download.csdn.net/detail/network__yang/5886409

有什么问题可以互相探讨。

-------------------------------------------------------------------------------------------

以下是自动互信脚本的思考步骤,仅供参考。互相学习。

先删除以前的密匙。
[root@HN509-AQ-WEB .ssh]# rm -f ~/.ssh/id_rsa*
没有重复文件的生成步骤:需要3次按键。
[root@HN509-AQ-WEB .ssh]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 1 
Enter passphrase (empty for no passphrase):              2
Enter same passphrase again:                                   3
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f2:94:41:fb:1b:26:f5:8e:43:05:0e:e0:47:ce:b4:e4 root@HN509-AQ-WEB

如果以前已经生成,则需要4不按键。
[root@HN509-AQ-WEB .ssh]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
88:b3:05:27:c3:9f:1d:a7:92:88:4b:83:b6:44:db:b8 root@HN509-AQ-WEB

此脚本只适用于,/root/.ssh/文件夹下有id_rsa和id_rsa.pub文件的情况。
[root@HN509-AQ-WEB log]# cat tmp.sh 
#!/usr/bin/expect
spawn ssh-keygen -b 1024 -t rsa
expect *key*
send \r
expect *verwrite*
send y\r
expect *passphrase*
send \r
expect *again:
send \r
interact
为了适应所有情况。建议执行前,在脚本中把id_rsa和id_rsa.pub文件删除。rm -f ~/.ssh/id_rsa*
先删除以前的密匙。
[root@HN509-AQ-WEB .ssh]# rm -f ~/.ssh/id_rsa*
没有重复文件的生成步骤:需要3次按键。
[root@HN509-AQ-WEB .ssh]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 1 
Enter passphrase (empty for no passphrase):              2
Enter same passphrase again:                             3
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f2:94:41:fb:1b:26:f5:8e:43:05:0e:e0:47:ce:b4:e4 root@HN509-AQ-WEB
执行脚本。
[root@HN509-AQ-WEB log]# cat tmp.sh 
#!/usr/bin/expect
spawn ssh-keygen -b 1024 -t rsa
expect *key*
send \r
expect *empty*
send \r
expect *again:
send \r
interact

传输公匙文件,这里是直接传输~/.ssh/到对端。由于对端可能没有~/.ssh/文件夹,还需要建,所以直接传输文件夹。

[root@HN509-AQ-WEB log]# cat tmp.10.7.1.29.sh 
#!/usr/bin/expect
spawn scp -r  /root/.ssh root@10.7.1.29:~/
expect *assword*
send \r
expect *assword*
send thinker\r
interact

如果是一台没有登陆过的服务器,在本机的know_hosts里面由于没有相应的公匙,所以会提示是否增加这个文件。
先删除本机的know_hosts文件,
rm -f ~/.ssh/known_hosts
修改自动脚本。
spawn scp -r /root/.ssh root@10.7.1.31:~/
The authenticity of host '10.7.1.31 (10.7.1.31)' can't be established.
RSA key fingerprint is 94:91:b1:7c:77:54:b9:72:c8:57:ca:c8:ec:20:7f:8c.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.

[root@HN509-AQ-WEB log]# cat tmp.10.7.1.29.sh 
#!/usr/bin/expect
spawn scp -r  /root/.ssh root@10.7.1.29:~/
expect *yes*
send yes\r
expect *assword*
send \r
expect *assword*
send thinker\r
interact

linux自动交互工具expect,tcl安装和安装包,以及自动互信脚本的更多相关文章

  1. Linux进程管理工具Supervisor的安装配置

    目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...

  2. 绿色版plsql安装和安装包

    转: 绿色版plsql安装和安装包 2018年08月07日 19:53:15 YoungLee16 阅读数 4890   最近在使用数据库的时候,或多或少的会出现一些问题,下面总结下如何安装ORACL ...

  3. shell自动交互之expect脚本_转

    转自:linux expect详解(ssh自动登录) shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 ...

  4. Linux批量部署工具Expect

    既然没有遇到过,做好准备总是好的.这是自己送给自己的话,现在运维做自动话越来越多,自己就学以下,记录笔记.目前主流的有puppet.Expect.pssh等等,今天就用Expect做自动部署和日常管理 ...

  5. Linux自动化命令工具expect

    expect是Unix系统中用来进行自动化控制和测试的软件工具,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等. 用法 Linux中我们经常写脚本处 ...

  6. Linux进程管理工具 Supervisord 的安装 及 入门教程

    Supervisor是一个进程管理工具,官方的说法: 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了 ...

  7. Linux 网络性能测试工具 iperf 的安装和使用

    简介:Iperf是一个网络性能测试工具.可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失.Iperf在Linux和windows平台 ...

  8. Kali Linux中下载工具Axel的安装和使用

    前言: Axel是一个多线程的HTTP/FTP下载工具,支持断点续传. Axel的安装 apt-get install axel Axel的卸载 apt remove axel 安装完成之后输入 ax ...

  9. ubuntu linux断点续传下载工具 uGet 的安装

    网址 http://ugetdm.com/downloads-ubuntu 使用命令行安装 sudo add-apt-repository ppa:plushuang-tw/uget-stable s ...

随机推荐

  1. UVA 10651 Pebble Solitaire(bfs + 哈希判重(记忆化搜索?))

    Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit: 1 second Pebble ...

  2. Android 推断当前Activity是不是最后一个Activity 以及 应用或Activity是否存在

    推断当前Activity是最后一个Activity: 在Activity的方法中, 有一个方法isTaskRoot()方法, 这种方法能够推断当前Activity是否是最后一个Activity, 假 ...

  3. hdu4893Wow! Such Sequence! (线段树)

    Problem Description Recently, Doge got a funny birthday present from his new friend, Protein Tiger f ...

  4. Jquery autocomplete 插件使用

    轻松实现类似百度输入框联想功能: autocomplete 是一个很厉害的插件,该插件基于jquery,在jquery官网能下载到最新版本. 首先,jQuery UI 是基于 jQuery 的,所以, ...

  5. (转)jQuery.extend 函数详解

    Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解       JQuery的extend扩展方法: Jquery的扩展方法extend ...

  6. 10个最实用的Linux命令

    收集了一些对于Linux新手最基本但最有用的Linux命令.你完全可以键入这些命令来管理你的服务器.这些命令对于学习vps或服务器管理的新手最为简便.1.List命令 ls -a //列出所有文件 l ...

  7. C#操作EXCEL的时候出现“ 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application” ”问题

    总是报出这个错误,准备放弃COM的组件转投NPOI,后来想起在装这个操作系统的时候,自带装过WPS,后来使用360卸载了.于是想着试一试的心态,重新安装了WPS,结果,问题解决了.你懂的.

  8. web前端工程师学习之路开启(前言)

    web前端工程师需要掌握的所有技能 图解1: 图解2:

  9. uva 1595 - Symmetry

    思路:首先,如果这些点对称,那么它们的对称轴是x = m(m是所有点横坐标的平均值):   把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这个点是否在集合里面.   如果有 ...

  10. SVG基础

    可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准.SVG 是使用 ...