Для тех из вас, кто пробовал все вышеперечисленные ответы без каких-либо успехов, попробуйте снизить значение -Xms. Я должен поддерживать более старый Eclipse (Weblogic Eclipse 10.3.6). У меня был следующий .ini на моей машине с Windows 7 и моей виртуальной машиной Windows Server 2008 R2 (версия Java ниже указывает на 32-разрядную Java), которая работали и отлично работали соответственно.
-vm
C:/Java/Java7/jdk1.7.0_79/bin/javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Xms1024m
-Xmx1024m
-XX:MaxPermSize=256m
-Dsun.lang.ClassLoader.allowArraySyntax=true
-Dweblogic.home=C:/Oracle/Middleware/wlserver_10.3
Итак, 32-разрядная Java для 32-разрядного Eclipse, но все же код выхода 1. Основываясь на всех ответах, которые я видел здесь, и единственное изменение будучи новым ноутбуком с Windows 10, единственным возможным объяснением было то, что новая ОС и Eclipse не соглашались на что-то. Поэтому я начал играть с каждым из значений, и это сработало, когда я опустил Xms и Xmx до 512m. У меня есть подозрение, что, возможно, новая ОС Windows предотвращает более высокий начальный размер кучи на основе некоторого условия выполнения (более высокие -Xms работают в Windows 10 на всех других подобных устройствах, с которыми я сталкивался), поэтому любое другое объяснение приветствуется. Тем временем следующее единственное значение, которое я настроил для успешного запуска Eclipse.
-Xms512m
Мне удалось найти решение, но это требует небольшой ручной работы. Если у кого-то есть лучшее решение, скажите мне.
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('first.com', username='luser', password='secret')
chan = ssh.invoke_shell()
# Ssh and wait for the password prompt.
chan.send('ssh second.com\n')
buff = ''
while not buff.endswith('\'s password: '):
resp = chan.recv(9999)
buff += resp
# Send the password and wait for a prompt.
chan.send('secret\n')
buff = ''
while not buff.endswith('some-prompt$ '):
resp = chan.recv(9999)
buff += resp
# Execute whatever command and wait for a prompt again.
chan.send('ls\n')
buff = ''
while not buff.endswith('some-prompt$ '):
resp = chan.recv(9999)
buff += resp
# Now buff has the data I need.
print 'buff', buff
ssh.close()
Следует отметить, что вместо этого
t = ssh.get_transport()
chan = t.open_session()
chan.get_pty()
... вы хотите это
chan = ssh.invoke_shell()
Это напоминает мне о том, как я пытался написать сценарий TradeWars, когда я был ребенок и отказался от программирования на десять лет. :)
Готовое решение можно найти в pxssh из проекта pxpect. Посмотрите примеры sshls.py и ssh_tunnel.py.