Я искал способ добавления удаленной файловой системы, доступной в Bluemix. В этом post мне сказали использовать стек cflinuxfs2, который поддерживается в последних версиях Cloud Foundry.Проблемы с использованием FUSE на Bluemix
Мне удалось выполнить команду mkdir для точки монтирования из моего приложения Java и выполнить команду sshfs, но в этом последнем случае сбой: «read: Connection reset by peer».
Дело в том, что те же команды, что и в ящике Linux на дому, работают нормально, поэтому я понимаю команду, ключ ssh и файлы файлов известных файлов в порядке.
Это часть Java EE код развернут в Либерти выполнения в Bluemix:
String s = null;
Process p = null;
BufferedReader br = null;
try
{
p = Runtime.getRuntime().exec("mkdir -p /home/vcap/misc");
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("#### Executing command mkdir with exit: " + p.exitValue());
p.destroy();
br.close();
p = Runtime.getRuntime().exec("sshfs [email protected]:/ /home/vcap/misc -o IdentityFile=/home/vcap/app/wlp/usr/servers/defaultServer/apps/myapp.ear/cloud.key -o StrictHostKeyChecking=yes -o UserKnownHostsFile=/home/vcap/app/wlp/usr/servers/defaultServer/apps/myapp.ear/known_hosts -o idmap=user -o compression=no -o sshfs_debug");
br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("#### Executing command sshfs with exit: " + p.exitValue());
p.destroy();
br.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
catch(InterruptedException ex)
{
ex.printStackTrace();
}
finally
{
try
{
if(br != null)
br.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
Ссылочные файлы команд включены в файл EAR и выдвигали в качестве части приложения. Я вижу их и их контент, просматривая файловую систему с панели инструментов Bluemix.
Просматривая в Интернете, я нашел массу сообщений об ошибке: «read: Connection reset by peer», но похоже, что они не применяются к моему делу, или они связаны с брандмауэрами и конфигурационными файлами. У меня нет доступа в Bluemix. И, как я уже сказал, те же две команды, которые выполняются в моей операционной системе Linux, отлично работают.
Любая идея или рекомендация, чтобы заставить ее работать? Кто-нибудь тестировал эту идею раньше в Bluemix?
Спасибо!
Ничего не распечатано с помощью 'printStackTrace()'? –
Нет, потому что нет ошибки Java. Команда выполняется «правильно» с точки зрения Java и возвращает код выхода 1. Вот и все. –
Я только что обнаружил p.getErrorStream(), чтобы получить ошибки консоли, а не только обычный вывод консоли. Проблема заключается в следующем: fusermount: option allow_other разрешен только в том случае, если в файле /etc/fuse.conf задано 'user_allow_other', поэтому у меня есть новая область исследования. Я отправлю обратно с выводами. –