公司服务器比较多,又不让用ssh公钥 如何用expect 写一个自动登录脚本。
by gjw_apparitor - Shell - 2009-01-16 18:01:35 阅读(4147) 回复(14)
[code]#!/usr/bin/expect -f set ipaddress [lindex $argv 0] set passwd [lindex $argv 1] set timeout 30 spawn ssh root@$ipaddress #expect "yes/no" #send "yes\r" expect "password:" send "$passwd\r" expect "]*" send "mkdir -p /tmp/haha/haha2\r" send "exit\r"[/code] 试着写了一个expect脚本,ssh自动登录然后执行某条命令,可是遇到没有登录过的机器需要输入yes,有没有可以用类似于if判断的方法让他自动判断??...
脚本名字:123.sh 作用:运行expect 123.sh后,能够自动登录到ip为125.1.1.1-30这30台机器运行一些相同的命令,省去了每台机器登录重复敲命令,浪费时间 #!/user/bin/expect -f for {set i 1} {$i<=30} {incr i} { spawn ssh -l root 125.1.1.$i expect "*password: " sleep 5 send "QwErT\r" send "find / -name hao.txt\r" interact } 但是我运行后发现只能登陆第一台机器,也就是125.1.1.1运行命令find / -name hao.txt, 后面的ip...
由于需要进行远程自动登录并进行操作 串行的情况下成功了,但是考虑到效率问题准备改为并发,遇到了问题,请高手指点,谢谢 使用shell调用exp #!/bin/bash for i in `awk '{print $2}' tmp.txt` do p=`awk -v I="$i" '{if(I==$2) print $4}' tmp.txt` n=`cat ssh.txt|wc -l` expect login.exp $i $p $n sleep 1 done 下面是login.exp中的循环部分 for {set i 1} {$i<$argv 2} {incr i} { set $i $spawn_id} spawn command 提...
这个脚本为啥不能登录主机呢?问题出在什么地方呢? 另外登录以后,测试远程主机是否存在某目录,有则继续执行expect脚本怎么写啊? #!/usr/bin/perl use expect; my $IP=$ARGV[0]; my $passwd='mima'; my $cmd=ls; my $exp = expect->spawn(ssh, $IP) or die("can not spawning") ; $exp->expect(1, [ qr/(yes\/no)?/i, sub { my $self = shift; $self->send("yes\n"...
写了一个简单的脚本,想实现通过scp将远程服务器的文件拷贝下来并重命名,遇到询问(yes/no)?时自动输入yes,遇到:号时自动回车,脚本如下: #!/bin/sh #!/usr/bin/expect -f #get iptables from remote machines,filename:getiptables while read line do spawn scp -o ConnectTimeout=10s root@$line:/etc/sysconfig/iptables ~/'iptables-'$line expect "(yes/no)?" send "yes\r" expect ":" send "\r\n" ...
现有一批服务器,用户名和密码均相同。 所有机器均没有expect,如何自动登录上目标服务器,执行一个命令后退出? 主要是想执行一下df -h 命令把这一批服务器的磁盘空间情况汇总一下。
expect循环登录多台服务器执行命令的脚本 #!/usr/bin/expect foreach IP { 61.152.114.188 61.152.114.185 ............. } { #循环,可以多台相同密码的服务器同时处理,不同密码的需要改动一下,在下面再加一个密码的循环, spawn ssh [email=username@$IP]username@$IP[/email] expect { "*(yes/no)*" { send "yes\r"} "password:" { send "123456\r" } } #SSH第一次远程登录服务器 expect "username" send "su...
我的程序为cs结构,client和server分别运行。 这两个程序当中都会涉及到对一台华为路由器的远程登录,ftp,添加访问控制列表等操作。 远程登录用expect脚本实现。 问题 1:每次还没添加几条控制表条目(不超过10条),就会出现某个脚本登录不上去的现象,然后此脚本所在的程序以后也无法登录,脚本手动执行却仍旧可以正常执行。 问题 2:华为路由器的防火墙那里为什么只能添加一条访问控制列表号,不知道如何多添几条? 请问...