centos6中shell嵌套expect执行命令

系统:centos 6.x

1.先安装expect

 代码如下 复制代码

yum -y install expect

2.脚本内容:

 代码如下 复制代码

cat auto_svn.sh
#!/bin/bash
passwd='123456'
/usr/bin/expect <<-EOF
set time 30
spawn ssh -p18330 root@192.168.10.22
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect "*#"
send "cd /home/trunk\r"
expect "*#"
send "svn up\r"
expect "*#"
send "exit\r"
interact
expect eof
EOF

这样写的话,就方便得很多,一个脚本就包括完了.

expect的简单用法及举例

使用脚本文件的例子--实现自动输密码

 代码如下 复制代码
#!/usr/bin/expect -f
set password 123456
#download
spawn scp root@192.168.1.218:/root/a.wmv /home/yangyz/
set timeout 300
expect "root@192.168.1.218's password:"
set timeout 300
send "$passwordr"
set timeout 300
send "exitr"
expect eof
时间: 2024-12-25 08:34:19

centos6中shell嵌套expect执行命令的相关文章

start-本地shell利用expect 执行远程主机脚本启动tomcat失败,无法启动。

问题描述 本地shell利用expect 执行远程主机脚本启动tomcat失败,无法启动. 本地shell脚本利用expect 执行远程主机脚本,远程脚本中设置了环境变量,使用catalina.sh start启动tomcat,但是无法启动,logs/下只有catalina.out并且无内容,登陆到远程主机执行脚本可以正常启动tomcat,是什么原因? 解决方案 看一下catalina.out,里面有没有什么错误提示之类的 解决方案二: 看一下日志文件,报的什么错.粘出来看看

Oracle中的文件的执行命令

在一个文件中将保存的我们常需要操作的命令,已删除为例. 在xy.sql中存在以下语句 delete from a; delete from b; delete from c; 把xy.sql保存在d盘. 在Oracle的命令窗口中输入以下命令便可执行上述的删除操作: SQL>@ d:\xy.sql; 或者 SQL>start d:\xy.sql;

linux中shell模拟多线程执行任务详解

shell本身是不能实现多线程的,但是可以通过启动子进程,并将子进程放入后台执行来模拟多线程,为了在提高脚本执行效率的同时又不明显增加负载的作用,还需要对同时放入后台的进程数做下限制.  代码如下 复制代码 #!/bin/bash set -x  # 开启调试模式 #判断是否有参数 if [ $# != 1 ];then     echo "您输入的参数有误"     exit -1 fi # 允许的最大进程数 MAX_THREAD_NUM=5 tmp_fifo_file=/tmp/$

centos6中shell计算web日志中平均连接时间

今天在网上看到一个求web连接平均时间的shell命令,在自己的机器上试了下,发现不能使用,居然出现awk: fatal: division by zero attempted这样的错误,毛了就自己改了下shell命令. 原shell脚本例子: cat access.log|grep "connect cbp" |awk 'BEGIN{sum=0;count=0;}{sum+=$10;count++;}END{printf("sum=%d,count=%d,avg=%f\n&

linux中定时任务中shell脚本不执行怎么办

解决办法 export PATH=$PATH:/bin:/usr/bin:/usr/local/bin 例子 : 每月每天每小时的第 0 分钟执行一次 /bin/ls :   0 * * * * /bin/ls 在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : */20 6-12 * 12 * /usr/bin/backup 周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 0 17 * * 1-5 m

centos6中shell自动adsl拨号脚本

脚本1:  代码如下 复制代码 cat /root/soft_shell/auto_adsl_1.sh #!/bin/bash gateway=`ifconfig ppp0 |grep P-t-P| cut -f 3 -d ":"|cut -f 1 -d " "` inter=`ifconfig |grep ppp0|awk '{print $1}'` N=2 if [[ $inter -eq ppp0 ]] then /sbin/adsl-stop sleep 1

windows/linux中shell自动登录ssh并执行一些命令

ssh安全的自动登录 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为172.24.253.2 ; A和B的系统都是Linux 在A上的命令:  代码如下 复制代码 # ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码) # ssh root@172.24.253.2 "mkdir .ssh;chmod 0700 .ssh" (需要输入密码) # scp ~/.ssh/id_rsa.pub r

linux下shell中执行命令的顺序问题

    在shell中有很多种命令的同义词,到底先执行的是哪一个命令呢,我们可以借助type -a命令来检查.     为了测试我们就对type本身做一条alias:     alias type=type     然后我们通过type -a type查看一下,结果如下: type -a type type is aliased to `type' type is a shell builtin type is /usr/bin/type     可以清楚地看到,对于命令来说首先执行的是alia

Shell脚本中实现切换用户并执行命令操作_linux shell

今天公司同事来找到我说要在服务器上用另外一个用户执行python脚本,但设置到crontab里却老是root用户来执行,为了省事我就想了一个偷懒的办法,就是用shell脚本切换到那个用户,然后去执行那个python脚本.好了,这篇文章我只演示怎么用shell脚本切换到其他用户执行命令. 系统:centos 5.x 脚本内容: cat test.sh 复制代码 代码如下: #!/bin/bash su - test <<EOF pwd; exit; EOF 执行结果图: 当然也可以用下面的命令来