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. Mybatis高级映射、动态SQL及获得自增主键

    一.动态SQL 相信大家在用mybatis操作数据库时时都会碰到一个问题,假如现在我们有一个关于作者的list authorList,需要根据authorList里已有的作者信息在数据库中查询相应作者 ...

  2. mybati之parameterType传递多个参数

    当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...

  3. SQL每个用户最后的一条记录

    SELECT [ID] ,[UserID] ,[StartDate] ,[EndDate] ,[CreateUser] ,[CreateDate] ,[LastEditUser] ,[LastEdit ...

  4. css3选择符使用个人理解。

    元素选择符: 通配选择符:一般用* 星号表示  他会命中整体标签. 类型选择符:一般用者空格表示  他会命中标签自己的所有子元素. ID选择符:  一般用# 井号表示  他会命中以id为属性的标签   ...

  5. Fragement理解

    ■ 初衷 可重用,碎片化UI,适应大屏幕pad和小屏幕手机 ■ 优点 自行控制加入,移除,交换. activity则由framework深度掌管. 切换流畅 模块化(逻辑上切割处理)   缺点带来额外 ...

  6. permission is only granted to system apps--Android manifest权限问题

    在android的manifest.xml下编辑如下代码:<uses-permission android:name="android.permission.INTERNET" ...

  7. (一)Knockout - 入门

    knockout 简介 knockoutjs的实现依照[MVVM模式],Model-View-ViewModel. Model,用来聚合server端数据 ViewModel,描述的数据以及操作,是行 ...

  8. Oracle—用户管理的备份(一)

    用户管理的备份(一) 一.首先要知道数据库中表空间和文件的信息,有几个性能视图,v$datafile,v$tablespace,v$tempfile,v$logfile,v$controlfile,d ...

  9. C++ Primer 5th 第2章 变量和基本类型

    *****代码在Debian g++ 5.3.1 / clang++ 3.8(C++11)下编写调试***** 由于部分编译器对标准遵循的不同以及自身额外的扩展,本章书中的少数知识点与实际实现存在偏差 ...

  10. linux 下使用crontab+wget实现秒及定时任务

    输入命令 crontab -e 打开一个文件,默认的编辑器为vi. 输入vi编辑器,输入i为插入,输入w保存,q退出,!强制.wq!强制保存并退出. * * * * * /usr/bin/wget - ...