echo + 管道符不是什么时候都可以生效(比如我写的自动提交博客脚本最后需要输入我的服务器的 git 仓库密码就不生效),因此我们可以使用 expect 方法来执行。 settimeout30 spawn ssh -l 用户名 10.125.25.189 expect"password:"send"要输入的密码"interact AI代码助手复制代码 这里的语句是这样的: 设置超时时间为30...
echo 'zjk123' | sudo -S cp file1 /etc/hosts 实现自动修改密码的脚本写法如下: echo 'password' | passwd -stdin username 第三种: expect:上面介绍的两种方法前提条件是指令有参数来设定密码输入方式,像ssh指令就没有这样的参数,第三种交互方式就派上用场了 expect就是用来做交互用的,基本任何交互登录的...
只需要两行简单的命令即可搞定,但这并不是常规的解决方案,如果是ftp连接就没辙了,况且,你不可能为了执行某些命令去给每个你要连接的主机都手动建立ssh信任,这已经偏离了今天主题的本意,今天要说的是在脚本里自动输入密码,我们可以想象下,更优雅的方式应该是在脚本里自己配置密码,当屏幕交互需要输入时自动输入进去...
因为他们都满足“有一个标准的输入”这个条件 4ssh的自动登陆没有这样的自动输入密码的参数 一般都是使用公钥/私钥的方式自动登录 这种文章满街都是,网上google一下ssh自动登陆就可以找到答案。 或者用下面的办法。 自动交互方法2:利用expect脚本自动登陆 这个expect基本属于一种编程了 基本任何需要交互式登陆的场合,他...
chmod +x ssh.sh ./ssh.sh 127.0.0.1 root 123456 注意 第一行定要写这句话,否则会报spawn: command not found #!/usr/tcl/bin/expect:使用expect来解释该脚本; 这个脚本和shell脚本部分指令不兼容.注意分开写 这3个必须要有,否则他一登录就退出掉了,不会执行mkdir的内容。
【转】shell实现SSH自动登陆 前言 公司开发使用docker,每次登陆自己开发机总要输入ssh user_name@ip_string,然后再确认输入password,手快了还经常会输错。作为一个懒人,肯定要找一个取巧的方式,查看了下ssh命令,由于它要进行一次跟服务器的加密交互,所以没有直接附带密码登陆的选项,只好作罢。
实现自动的ssh登录: /usr/bin/expect <<EOF spawn ssh nathan@10.19.208.102 expect "password:" send "passwd\n" expect eof EOF 然而登录了之后并没有用,需要写一些执行的逻辑,人手动敲命令无法实现,而且这个是是expect脚本,和shell script还是有本质的区别的。这种应该是我的写法不对,果断换了另外一种写法。
expect:expect命令用于等候一个相匹配的输出,一旦匹配就执行后面的动作。 send:一般是expect中的动作命令,向进程发送输入内容。 interact:运行表示将控制权交给用户,与spawn生成的进程进行交互。 四、执行结果: 执行shell脚本, 自动执行ssh连接服务器ip,并输入用户密码,登录成功。
!直到以该模式开始的一行的所有内容都被解释为标准输入。这种方法类似于将多行echo通过管道传输到ssh中...