``` #!/bin/bash des_pass=testtest expect -c " spawn scp target/aaa-0.0.1.war root@192.168.1.30:/home/GameUser/MagicvesselUserWeb/aaa-release.war expect \"password:\" send \"${des_pass}\r\" expect eof "
``` #!/bin/bash des_pass=testtest expect -c " spawn scp target/aaa-0.0.1.war root@192.168.1.30:/home/GameUser/MagicvesselUserWeb/aaa-release.war expect \"password:\" send \"${des_pass}\r\" expect eof "
#!/usr/bin/expect
set timeout 100
set password "123456"
spawn sudo rm -rf zzlogic
expect "root123456"
send "$password\n"
interact
[yjwan@test ~]$ ftp -i -n 192.168.21.46 <
user dbftp dbftp101
ls
EOF
#!/usr/bin/expect set timeout 10 set host [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] set src_file [lindex $argv 3] set dest_file [lindex $argv 4] spawn scp $src_file $username@$host:$dest_file expect { "(yes/no)?" { send "yes\n" expect "*assword:" { send "$password\n"} } "*assword:" { send "$password\n" } } expect "100%" expect eof
#!/usr/bin/expect -f set dtime [lindex $argv 0 ] set password 111111 set timeout 3000; spawn /usr/bin/scp /software/databk/$dtime.sql cdczhangg@10.151.254.25:/software/mysqldata/ #spawn ssh cdczhangg@10.151.254.25 expect { "*yes/no" {send "yes\r";exp_continue} "*password:" {send "$password\r"} } interact
#!/usr/bin/expect
set timeout 30
set file [lindex $argv 0]
spawn scp $file root@xxx.xxx.xxx.xxx:目标服务器文件保存路径
expect -re "password:" { send "你的服务器密码\r" }
expect eof
1. [#!/usr/bin/expect]
告知系统脚本里的代码使用那一个shell来执行。
注意:这一行需要在脚本的第一行。
2. [set timeout <timeout>]
基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒. timeout -1 为永不超时
3. [spawn <command>]
spawn是进入expect环境后才可以执行的expect内部命令, 主要给后续的命令加个壳, 用来传递交互指令.
4. [expect "<match_string>"]
这里的expect也是expect的一个内部命令,请不要惊讶.
5. [send "<response_string>\r"]
这里就是执行交互动作,与手工输入内容的动作等效。
温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下.
6. [interact]
执行完成后保持交互状态,把控制权交给控制台, 若要退出,使用expect eof代替
7. $argv 参数数组
expect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个....参数
[yjwan@test ~]$ ftp -i -n 192.168.21.46 <
p="">
user dbftp dbftp101
ls
EOF
#!/usr/bin/expect
spawn ssh root@1.1.1.1
expect "*password:"
send "123\r"
expect "*#"
interact
#!/bin/bash
# using one command line parameterfactorial=1
for (( number=1; number<=$1; number++ ))
do
factorial=$[ factorial * $number ]
done
echo The factorial of $1 is $factorial
#!/bin/bash expect -c " spawn scp root@1.2.3.4:/root/1.log /root expect { \"*assword\" {set timeout 300; send \"password\r\";} \"yes/no\" {send \"yes\r\"; exp_continue;} } expect eof"
[yjwan@test ~]$ ftp -i -n 192.168.21.46 <<EOF
user dbftp dbftp101
ls
EOF
`cd $path && sshpass -p HS~u8ro8e scp -o StrictHostKeyChecking=no $package javadev\@121.199.60.78:/home/javadev/server`;
# vim /etc/ssh/sshd_config
Port 3389 //修改端口号,修改后客户端登陆ssh -p 3389 x.x.x.x
Protocol 2
ListenAddress 192.168.168.174 //不是在所有IP地址上监听,只监听指定IP地址
PermitRootLogin no //不允许root用户以ssh方式登陆
PermitEmptyPasswords no //不允许使用空密码
UseDNS no //不执行DNS反解
LoginGraceTime 2m //登录限时(宽限期),若客户端超过此时间(默认2分钟)
//未登录成功,服务器将主动断开连接
StrictModes yes //严格模式,此模式会在允许登入前检查用户家目录和密钥库
//文件的权限、归属,若有异常(其他人能写入)则拒绝登入
MaxAuthTries 6 //每次连接允许认证登录的最多次数,若超过此次数
//仍未登录成功,服务器将主动断开连接