我有一个博科FC交换机,我想要做一些分区。 我有一个包含太多行的构build文件,可以将其复制粘贴到正常的交互式会话中,并且使用交换机和我的unixpipe理服务器之间的预共享密钥设置了ssh。 我没有期望,宁愿坚持直接的SSH和bash。
我已经尝试单独发送命令,但它失败了,因为每个ssh命令是一个单独的会话,所有未提交的命令会在会话被删除后立即刷新。
我试过这个:
cat testbuildfile | ssh -tt user@switch
它几乎可以工作,因为它运行我的构build文件中的所有命令,但是它使我在Brocade上的一个会话完成后无法使用。 我有我的博科命令提示符,但如果我input任何东西,它挂起,我不得不ctrl-c回到我的UNIX服务器。
我知道我可以把commit命令放到我的构build文件中,但我宁愿有机会在提交之前检查和validation工作。 理想情况下,我想让它运行我的命令文件,然后让我login到它开始为我检查,然后手动提交命令的会话。 我可以这样做吗?
编辑:在Brocade交换机上运行脚本是不可能的,否则会导致保修失效。
对 – 你在ssh会话中劫持了stdin,并且不再连接到你的terminal。 除非将quit添加到命令stream中,否则将会挂起。
试试这个魔术吧:
#!/bin/bash host=blch1-sw3 session=$host.$$ CR="$(echo -e '\r')" screen -d -m -S $session screen -S $session -p 0 -X zombie kr screen -S $session -p 0 -X hardstatus alwayslastline screen -S $session -p 0 -X hardstatus string "$host config change 3.14159" screen -S $session -p 0 -X stuff "exec ssh -l USERID $host$CR" sleep 2 screen -S $session -p 0 -X stuff "PASSW0RD$CR" sleep 5 screen -S $session -p 0 -X stuff "version$CR" sleep 2 screen -S $session -p 0 -X stuff "# Changes complete - commit or abort$CR" screen -x $session