织物悬挂在示意远程bash脚本时

  • 本文关键字:bash 脚本 python bash fabric
  • 更新时间 :
  • 英文 :


我有一个名为 ssadmin.sh的bash脚本,它将管理另一个脚本sscounter.sh。我正在使用织物来敏感ssadmin.sh

没有pty=False

def ts1():
    with settings(warn_only=True):
        run("chmod 775 %s" % 'ssadmin.sh')
        run("%s start" % 'ssadmin.sh')

sscounter.sh甚至无法启动,但是CMD不会被绞死:

root@ubuntu-1404:~# /mithril/scripts/ss-bash/ssadmin.sh status
ssserver not running
sscounter.sh not running

使用pty=False

def ts1():
    with settings(warn_only=True):
        run("chmod 775 %s" % 'ssadmin.sh')
        run("%s start" % 'ssadmin.sh', pty=False)

root@ubuntu-1404:~# /mithril/scripts/ss-bash/ssadmin.sh status
ssserver not running
10670 ?        S      0:00 /bin/bash /mithril/scripts/ss-bash/sscounter.sh
sscounter.sh is running

sscounter.sh开始,但是CMD悬挂:

E:[Sync]projectwalbkfab>fab ts1
[192.168.1.181] Executing task 'ts1'
[192.168.1.181] run: chmod 775 /mithril/scripts/ss-bash/ssadmin.sh
[192.168.1.181] run: /mithril/scripts/ss-bash/ssadmin.sh start
[192.168.1.181] out: stdin: is not a tty
[192.168.1.181] out:  9915 ?        S      0:00 /bin/bash /mithril/scripts/ss-bash/sscounter.sh
[192.168.1.181] out: sscounter.sh鍚姩涓?..
[192.168.1.181] out: 10670 ?        S      0:00 /bin/bash /mithril/scripts/ss-bash/sscounter.sh
[192.168.1.181] out: sscounter.sh宸插惎鍔?
[192.168.1.181] out:                 (hang at here)

1.为什么织物悬挂?

2。fabric pty description:http://docs.fabfile.org/en/latest/usage/interactivity.html#echoes

pty is present to echo a user’s stdin,为什么sscounter.shpty=True时不会启动?

我有一眼您的代码,因为您不需要在sscounter.sh中打印出任何内容,因此有一个快速解决方案:将( $DIR/sscounter.sh ) &更改为( $DIR/sscounter.sh ) >/dev/null 2>&1 &

当您不重新定向stdout时,面料将等待它,并且由于您的sscounter.sh不会退出面料。

如果您运行 ssadmin.sh(无stdout重定向的版本),则类似: ssh user@remote-host 'bash ssadmin.sh',它也会出于同样的原因而悬挂。否则,如果您使用的是ssh -t user@remote-host 'bash ssadmin.sh',它将不会悬挂。

我认为将面料与pty=Truepty=False一起使用,就像使用和不使用-t选项的ssh一样。

相关内容

  • 没有找到相关文章

最新更新