当前位置: 技术问答>linux和unix
请问一个shell脚本的问题
来源: 互联网 发布时间:2017-03-01
本文导语: 想从一台linux A上ssh到另外一台linux B上,然后做一些事情,写了以下脚本 #!/bin/bash ssh root@B cd /opt 以上执行的话,虽然登录到了B服务器上,但是并没有进入到/opt目录下。 当exit的时候,发现进入了A的/opt目录。 ...
想从一台linux A上ssh到另外一台linux B上,然后做一些事情,写了以下脚本
#!/bin/bash
ssh root@B
cd /opt
以上执行的话,虽然登录到了B服务器上,但是并没有进入到/opt目录下。
当exit的时候,发现进入了A的/opt目录。
请问如果我想ssh到B后,再进入B的opt目录的话,应该怎么写这段脚本呢?谢谢。
#!/bin/bash
ssh root@B
cd /opt
以上执行的话,虽然登录到了B服务器上,但是并没有进入到/opt目录下。
当exit的时候,发现进入了A的/opt目录。
请问如果我想ssh到B后,再进入B的opt目录的话,应该怎么写这段脚本呢?谢谢。
|
写在一行里面呢
ssh root@B cd /opt
ssh root@B cd /opt
|
貌似这应该分别属于两个不同的进程吧:ssh、bash
bash 仅是创建了子进程 ssh
bash 本身的脚本还是执行在 bash 本身的进程中吧
bash 仅是创建了子进程 ssh
bash 本身的脚本还是执行在 bash 本身的进程中吧
|
直接写一行,结果就是 3 楼的情况,是会执行并结束的。这就是 ssh 的一个用法。
如果lz有什么想法呢?是做一个登录脚本再执行一些命令,不需要交互的话,就是用 ssh root@B command 的方法呀;如果要交互,那就登录后手工处理呗,另外用 expect 也是一个主意。
按 lz 的写法:
的A机器执行后,第一句 ssh 启动一个子进程ssh clietn,连接到B主机,这是一个交互的进程,你在上面做各种操作后,退出,返回主进程,这个主进程是在 A 机器的,所以自然下面的 cd /opt 还是在 A 机器上执行。
如果lz有什么想法呢?是做一个登录脚本再执行一些命令,不需要交互的话,就是用 ssh root@B command 的方法呀;如果要交互,那就登录后手工处理呗,另外用 expect 也是一个主意。
按 lz 的写法:
#!/bin/bash
ssh root@B
cd /opt
的A机器执行后,第一句 ssh 启动一个子进程ssh clietn,连接到B主机,这是一个交互的进程,你在上面做各种操作后,退出,返回主进程,这个主进程是在 A 机器的,所以自然下面的 cd /opt 还是在 A 机器上执行。