我想在脚本中打开一个ssh会话,然后在本地执行其他命令,然后将命令发送到已经打开的ssh会话。
具体来说,我想在Linux中运行一个shell脚本,第一个在后台打开一个ssh会话然后继续并将数据库置于只读模式,然后在打开的ssh会话中运行一个命令,然后将数据库重新写入模式。 当我这样做时,每秒都会计算,并且实际打开ssh会话大约需要80%的时间,这就是为什么我不想打开ssh会话并在数据库处于只读状态时向它发送命令的原因模式。
我无法访问expect
。
答案 0 :(得分:1)
我认为连接多路复用是你的答案。
它的工作方式是,如果您与同一服务器之间存在ssh
连接,
例如,在同一台机器上的另一个窗口中,
或当前登录shell中的后台会话,
与同一服务器的后续ssh
连接可以重用第一个,
显着加快启动时间,
就像你想要达到的目标一样。
将此添加到~/.ssh/config
以在连接到服务器时启用它:
Host yourserver
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
我在任何地方都使用此功能,因此我使用yourserver
代替*
。
在您登录后,在一个窗口中对服务器执行此操作:ssh
,ssh到另一个窗口中的同一服务器。第二个连接必须更快,因为它不需要进行身份验证和建立连接,因为它将重用已经存在的连接。