自动登录
apt-get install autossh
apt-get remove expect
autossh.sh


set IPandPort yourport
set username username
set remoteHost xxx.xxx.xxx.xxx
set password yourpassword

while (1) {
set connectedFlag 0;
spawn /usr/bin/ssh -p $IPandPort $username@$remoteHost;
match_max 100000;
set timeout 60;
expect {
"?sh: Error*"
{ puts "CONNECTION_ERROR"; exit; }
"*yes/no*"
{ send "yes\r"; exp_continue; }
"*?assword:*" {
send "$password\r"; set timeout 4;
expect "*?assword:*" { puts "WRONG_PASSWORD"; exit; }
set connectedFlag 1;
}
# if no password
"*~*"
{ send "echo hello\r"; set connectedFlag 1; }
}
if { $connectedFlag == 0 } {
close;
puts "SSH server unavailable,retrying...";
continue;
}

while (1) {
set conAliveFlag 0;
interact {
# time interval for checking connection
timeout 60 {
set timeout 10;
send "echo hello\r";
expect "*hello*" { set conAliveFlag 1; }
if { $conAliveFlag == 1 } {
# connection is alive
continue;
} else { break; }
}
}
}

close;
puts "SSH connection Failed,restarting...";
}
运行./autossh.sh

自动登录方法二

#!/usr/bin/expect


set password yourpassword


spawn ssh -p port xxx.xxx.xxx.xxx


set timeout 30000


expect "root@xxx.xxx.xxx.xxx's password:"


set timeout 30000
send "$password\r"
send -- "\r"
interact #这里非常重要,不然登录后不能操作
expect eof


自动拷贝文件至远端机器
#!/usr/bin/expect set password yourPasswor spawn scp -P yourPort /home/fileName.war root@xxx.xxx.xxx.xxx:/usr/local/liferay-portal/deploy/ set timeout 30000 expect "root@xxx.xxx.xxx.xxx's password:" set timeout 30000 send "$password\r" set timeout 30000 send "exit\r" expect eof

Ubuntu expect使用经验的更多相关文章

  1. 无法为Android教程构建GStreamer

    我在尝试构建GStreamerAndroid教程时遇到了很多问题.我的环境是:>MacOSX7>AndroidSDK版本17>AndroidNDK8d我能够在Eclipse和命令行中构建和运行NDK示例.我已经下载了http://cdn.gstreamer.com/android/arm/gstreamer-sdk-android-arm-debug-2012.11.tar.bz2并将GSTREA

  2. android – 无法摆脱错误“/usr/bin/ld:找不到-lncurses”

    有人能指出我错过了什么吗?解决方法然后重新运行命令

  3. Windows 8 JavaScript项目中bld和bin文件夹的用途是什么?

    我知道bld和bin文件夹中的文件不是已部署的应用程序所引用的文件,那么什么是他们为bld和bin文件夹之间有什么区别?它们是用于“构建”的应用程序进程的临时构建目录.但是,bin目录是部署目录,从技术上讲,您应该能够编辑并启动下一个实例来获取这些更改.当我刚刚使用bin目录测试它时,它确实在我终止应用程序后接收了那些更改,并从起始页面再次启动

  4. centos – 将实用程序添加到/ bin / bash(chrooted)

    我的主机用户在/bin/bash上用于SFTP.如何将unzip添加到可以执行的实用程序列表中?

  5. CentOS – bin / * MD5在相同主机之间有所不同

    2.上述预链接消息的原因可能是什么?

  6. 为所有用户更改PATH环境变量. (Ubuntu的)

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  7. 在Ubuntu 16.04 LTS上安装MySQL 5.7的非交互式(静默)

    MySQL5.7(实际上是5.6)改变了MysqL_secure_installation的工作方式.这使得很难找到Ubuntu16.04LTS的工作,静默,脚本安装.如何以脚本化非交互方式安全地安装MysqL?下面的完整脚本可以放入我们称之为“install.sh”的文件中,并执行以下操作:关于以下脚本:>请记住通过用密码替换第4行上的问号来设置MysqL_ROOT_PASSWORD.>如果以r

  8. 如何在服务器所在的服务器上获取php二进制文件的路径

    我在PHP中使用如下的exec命令:在我的本地环境(MAMP)中,我知道PHP的安装路径,所以我可以用/Applications/MAMP/bin/PHP/PHP5.4.10/bin/PHP替换/usr/bin/PHP.但我不知道PHP安装(PHP二进制文件)在生产服务器上的位置.它通常是/usr/bin/PHP,但您可以尝试捕获并解析命令’whereisPHP’或’whichPHP”的输出.或者

  9. PHP模块编译API不正确(无法初始化)

    我正在尝试在RHEL5盒子上安装freetds和PHP-mssql.我已成功完成(似乎是)所有事情.但是,当PHP尝试加载模块时,我收到以下错误:我一直在努力弄清楚为什么他们有不同的价值,但没有成功.在最新的尝试中,我下载了我正在运行的版本的PHP源码(PHP-5.3.8),进入了ext/mssql文件夹并运行了PHPize,configure,make,makeinstall.我验证了mssql

  10. 安装了Composer,但得到/usr/bin/env:php:没有这样的文件或目录

    在CentOS7上,我安装了PHP7.1.然后我安装了作曲家:然后,当使用作曲家时,我得到:使用sudo作曲家时,我得到:正如@alexhowansky建议的那样,我运行了以下命令:现在composer命令工作.谢谢

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部