执行python脚本时,最后一行(调用函数行)出现语法错误

执行python脚本时,最后一行(调用函数行)出现语法错误,python,automation,pexpect,Python,Automation,Pexpect,我正试图通过使用pexpect的python脚本自动化一些任务。 我也在使用2.sh脚本。1调用此python脚本,第二个启动二进制脚本的执行 以下是我正在使用的文件: root@box: ~# cat while.sh #!/bin/bash while read line do ./try $line done < $1 root@box: ~# cat try #!/usr/bin/python import sys, pwd, os sys.path.append('

我正试图通过使用pexpect的python脚本自动化一些任务。 我也在使用2.sh脚本。1调用此python脚本,第二个启动二进制脚本的执行

以下是我正在使用的文件:

root@box: ~# cat while.sh
#!/bin/bash
while read line
do

    ./try $line
done < $1

root@box: ~# cat try
#!/usr/bin/python

import sys, pwd, os
sys.path.append('pexpect')
try:
        import pexpect
except(ImportError):
        print "\nYou need the pexpect module."
        sys.exit(1)
#Change this if needed.
LOGIN_ERROR = 'not response! '
def connect(host):
        print "Trying: ",host
        child = pexpect.spawn ('./x '+host)
        child.expect ('Enter string: ')
        child.sendline ('blablastring')
        i = child.expect([LOGIN_ERROR, pexpect.TIMEOUT], timeout=10)
        if i  == 1:
                print "\n\t[!] OK:",host
                child.sendline ('echo OK')
                print "\nCommand executed successfully on:",host
                print child.before
                child.interact()
        if i == 0:
                print "Failed to exec cmd on: ",host
if len(sys.argv) != 1:
        print "\nUsage : ./try <host>"
        print "Eg: ./try 1.3.3.7\n"
        sys.exit(1)
target = sys.argv[1]
try:
     connect(host)

root@box: ~# cat x
#!/bin/bash

./somescript -h $1 -d 22
root@box: ~#

root@box: ~# head -n 5 hosts
192.168.1.120
192.168.1.121
192.168.1.122
192.168.1.123
192.168.1.124
root@box: ~#

root@box: ~# sh while.sh hosts
  File "./try", line 34

                        ^
SyntaxError: invalid syntax
  File "./try", line 34

                        ^
SyntaxError: invalid syntax
  File "./try", line 34

                        ^
SyntaxError: invalid syntax
  File "./try", line 34

                        ^
SyntaxError: invalid syntax
  File "./try", line 34

root@box: ~#
root@box:~#边猫边吃
#!/bin/bash
读行时
做
/试试$line
已完成<$1
root@box:~#试试看
#!/usr/bin/python
导入系统、pwd、操作系统
sys.path.append('pexpect')
尝试:
导入预期
除(恐怖)外:
打印“\n您需要pexpect模块。”
系统出口(1)
#如果需要,请更改此选项。
登录\错误='未响应!'
def连接(主机):
打印“正在尝试:”,主机
child=pexpect.spawn('./x'+主机)
child.expect('输入字符串:')
child.sendline('blablastring')
i=child.expect([LOGIN\u ERROR,peexpect.TIMEOUT],TIMEOUT=10)
如果i==1:
打印“\n\t[!]确定:”,主机
child.sendline('echo OK')
打印“\n在:”,主机上成功执行的命令
在之前打印子文件
child.interact()
如果i==0:
打印“无法在主机上执行cmd:”
如果len(sys.argv)!=1:
打印“\n用法:./try”
打印“例如:./try 1.3.3.7\n”
系统出口(1)
目标=sys.argv[1]
尝试:
连接(主机)
root@box:~#x类
#!/bin/bash
./somescript-h$1-d 22
root@box: ~#
root@box:~#头-n 5台主机
192.168.1.120
192.168.1.121
192.168.1.122
192.168.1.123
192.168.1.124
root@box: ~#
root@box:~#sh while.sh主机
文件“/try”,第34行
^
SyntaxError:无效语法
文件“/try”,第34行
^
SyntaxError:无效语法
文件“/try”,第34行
^
SyntaxError:无效语法
文件“/try”,第34行
^
SyntaxError:无效语法
文件“/try”,第34行
root@box: ~#
失败在哪里?

这是错误的:

try:
   connect(host)
这将有助于:

try:
   connect(host)
except Exception:
    pass
这是错误的:

try:
   connect(host)
这将有助于:

try:
   connect(host)
except Exception:
    pass
这是错误的:

try:
   connect(host)
这将有助于:

try:
   connect(host)
except Exception:
    pass
这是错误的:

try:
   connect(host)
这将有助于:

try:
   connect(host)
except Exception:
    pass


因为你有一个
try
而没有
除外
?因为你有一个
try
而没有
除外
?因为你有一个
try
而没有
除外
?因为你有一个
而没有
除外
除外
比较好,避免捕捉到诸如
SystemExit
之类的内容。是的。但这只是一个示例代码。他试图抓住的例外情况是,他无论如何都会选择。SystemExit仅在人们使用sys模块时才会出现。我想你指的是SystemError异常;)。在他的代码中,sys只在开始时执行。不,我的意思是
SystemExit
。该异常,连同
GeneratorExit
键盘中断
,和
StopIteration
,更多地用于程序流/终止,而不是发出实际错误情况的信号,应该很少被捕捉到,但不知何故,脚本无法正常工作:root@box用法:试试看例句:试试看1.3.3.7root@box:~#
例外情况除外
更可取,以避免捕获诸如
SystemExit
之类的内容。是的。但这只是一个示例代码。他试图抓住的例外情况是,他无论如何都会选择。SystemExit仅在人们使用sys模块时才会出现。我想你指的是SystemError异常;)。在他的代码中,sys只在开始时执行。不,我的意思是
SystemExit
。该异常,连同
GeneratorExit
键盘中断
,和
StopIteration
,更多地用于程序流/终止,而不是发出实际错误情况的信号,应该很少被捕捉到,但不知何故,脚本无法正常工作:root@box用法:试试看例句:试试看1.3.3.7root@box:~#
例外情况除外
更可取,以避免捕获诸如
SystemExit
之类的内容。是的。但这只是一个示例代码。他试图抓住的例外情况是,他无论如何都会选择。SystemExit仅在人们使用sys模块时才会出现。我想你指的是SystemError异常;)。在他的代码中,sys只在开始时执行。不,我的意思是
SystemExit
。该异常,连同
GeneratorExit
键盘中断
,和
StopIteration
,更多地用于程序流/终止,而不是发出实际错误情况的信号,应该很少被捕捉到,但不知何故,脚本无法正常工作:root@box用法:试试看例句:试试看1.3.3.7root@box:~#
例外情况除外
更可取,以避免捕获诸如
SystemExit
之类的内容。是的。但这只是一个示例代码。他试图抓住的例外情况是,他无论如何都会选择。SystemExit仅在人们使用sys模块时才会出现。我想你指的是SystemError异常;)。在他的代码中,sys只在开始时执行。不,我的意思是
SystemExit
。该异常,连同
GeneratorExit
键盘中断
,和
StopIteration
,更多地用于程序流/终止,而不是发出实际错误情况的信号,应该很少被捕捉到,但不知何故,脚本无法正常工作:root@box用法:试试看例句:试试看1.3.3.7root@box: ~#