У меня были некоторые проблемы с этим, когда каждый раз, когда я запускал свою программу, она меняла вывод. например Если бы я искал /bin/bash
, иногда возвращалось бы, что оно было найдено, а в других случаях возвращалось, что оно пропало.
Я получил следующий код для согласованной работы с файлами и папками, предшествовавший тому, что я ожидал, с \r\n
# returns 0 if the file is missing and 1 if the file exists
# if ( hostFileExists( host, '/bin/sh/' ) == 1 ): echo "File exists!"
def hostFileExists( host, theFile ):
host.sendline( '[ ! -e %r ] && echo NO || echo YES' % theFile )
return host.expect( ["\r\nNO", "\r\nYES"] )
или
# provide the host, the command, and the expectation
# command = '[ ! -e "/bin/sh" ] && echo NO || echo YES'
# expecting = ['NO', 'YES']
# i = hostExpect( host, command, expecting )
# if ( i == 1 ): echo "File exists!"
def hostExpect( host, command, expect ):
newExpect = []
for e in expect:
newExpect.append( "\r\n%s" % e )
host.sendline( command )
return host.expect( newExpect )
Надеюсь, это поможет вам.
Редактировать: Также заметил, что когда ssh'ing в Windows (cygwin) и пытается увидеть, существует ли файл, файл должен быть в кавычках. В Linux это необязательно. Таким образом, %s
в host.sendline
был изменен на %r
.