|
1 / 1 / 1
Регистрация: 01.12.2009
Сообщений: 4
|
|
Получение ip сервера03.03.2016, 10:07. Показов 14614. Ответов 47
Метки нет (Все метки)
Коллеги, всем день добрый!
Возникла задача - получить все IP адреса сервера Domino агентом. Можно ли это сделать?
0
|
|
| 03.03.2016, 10:07 | |
|
Ответы с готовыми решениями:
47
Получение пинга с сервера Получение JSON с сервера Получение текста с сервера |
|
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
|
|
| 03.03.2016, 10:44 | |
|
можно.
Есть несколько методов. зависит от контекста
0
|
|
|
1 / 1 / 1
Регистрация: 01.12.2009
Сообщений: 4
|
||
| 03.03.2016, 11:01 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
|
|
| 03.03.2016, 11:14 | |
|
каким образом "стучится"?
0
|
|
|
1 / 1 / 1
Регистрация: 01.12.2009
Сообщений: 4
|
||
| 03.03.2016, 11:33 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
|
|
| 03.03.2016, 11:44 | |
|
самый простой способ - подключить JAVA при условии, что известен хост.
Хост можно найти в names.nsf Код (Java): import java.net.InetAddress; import java.net.UnknownHostException; public class GetIP { public static void main(String[/URL][] args) { InetAddress[/URL] address = null; try { address = InetAddress[/URL].getByName("www.java2s.com"); } catch (UnknownHostException[/URL] e) { System[/URL].exit(2); } System[/URL].out.println(address.getHostName() + "=" + address.getHostAddress()); System[/URL].exit(0); } }
0
|
|
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 03.03.2016, 11:54 | |
|
выкладывал здесь куски сканера сети (многопоточный), кот. менеее че за секунду просканит сеть (и не одну)
ставил ограничение маски (иначе, в линухах, все сокеты выжрет) единственный момент - я писал для 8-ой java придется переделывать со стримов на циклы но в принципе - там все необязательно и есть ссылки на оригиналы идей возможности: определение доступных интерфейсов (сетевых IPV4), определение на них подсетей (по маске), сканирование этих подсетей по нужному порту (у сервера будет 1352), ограничение маски, выдача откликнувшихся хостов
0
|
|
|
1 / 1 / 1
Регистрация: 01.12.2009
Сообщений: 4
|
||
| 03.03.2016, 11:55 | ||
Может все-таки LS или win API как-то использовать?
0
|
||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
||
| 03.03.2016, 12:01 | ||
учите java
0
|
||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 03.03.2016, 12:07 | |
|
вот полный код определения интерфейсов
Код (Java): package kodiForm; import org.apache.commons.net.util.SubnetUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.net.*; import java.util.*; import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; import static java.lang.System[/URL].out; /** * Created by mike on 29.10.15. */ class NetUtils { private static int TIMEOUT = 500; private static short MASQ_LIIM = 20;//limit prefix masq len for restrict lage network scan private static final String[/URL] resPath = "./res"; private static final Logger LOG = LoggerFactory.getLogger(new Throwable[/URL]().getStackTrace()[0].getClassName()); private static Predicate<NetworkInterface> notLoopback = iface -> { boolean ret = false; try { ret = !iface.isLoopback(); } catch (SocketException[/URL] e) { e.printStackTrace(); } return ret; }; private static final Predicate<NetworkInterface> notFake = iface -> { boolean ret = false; try { ret = !iface.isLoopback() & !iface.isPointToPoint() & (Collections[/URL].list(iface.getInetAddresses()).size() > 0) & !iface.isVirtual(); } catch (SocketException[/URL] e) { e.printStackTrace(); } return ret; }; private static final Predicate<InterfaceAddress> masq = addr -> { boolean ret = false; ret = addr.getNetworkPrefixLength() >= MASQ_LIIM; return ret; }; private static final Predicate<InterfaceAddress> ipv4 = addr -> { LOG.info("filter IPV4 for:" + addr.getAddress().getHostAddress()); return addr.getAddress() instanceof Inet4Address; }; //http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/util/SubnetUtils.html //http://stackoverflow.com/questions/2942299/converting-cidr-address-to-subnet-mask-and-network-address /** * @param address tested address * @param subnet CIDR notation "192.168.0.1/16" * @return true if included */ private static boolean checkIpBySubNet(String[/URL] address, String[/URL] subnet) { SubnetUtils utils = new SubnetUtils(subnet); LOG.info("Network:{}", utils.getInfo().getNetworkAddress()); return utils.getInfo().isInRange(address); } /** * @param address tested address * @param subnetaddr address from subnet (any known) * @param mask mask * @return true if included */ public static boolean checkIpBySubNet(String[/URL] address, String[/URL] subnetaddr, String[/URL] mask) { SubnetUtils utils = new SubnetUtils(subnetaddr, mask); return utils.getInfo().isInRange(address); } /** * @param anyIp * @return list local interface addresses accessible for anyIp (withyn subnet) * @throws SocketException */ public static List<String> accessibleAddresses(String[/URL] anyIp) throws SocketException[/URL] { return getIfacesList().stream() .filter(iface -> { String[/URL] cidr = String[/URL].format("%s/%s", iface.getAddress().getHostAddress() , String[/URL].valueOf(iface.getNetworkPrefixLength()) ); return checkIpBySubNet(anyIp, cidr); }) .map(iface -> iface.getAddress().getHostAddress()) .collect(Collectors.toList()); } public static List<String> accessibleRange(String[/URL] anyIp) { ArrayList<String> res = new ArrayList<>(); InetAddress[/URL][] addrs = null; try { addrs = InetAddress[/URL].getAllByName(anyIp); } catch (UnknownHostException[/URL] e) { e.printStackTrace(); } assert addrs != null; for (InetAddress[/URL] addr : addrs) { try { if (addr.isReachable(1000)) { res.add(addr.getHostAddress()); } } catch (IOException[/URL] e) { e.printStackTrace(); } } return res; } public static List<String> accessibleRange() { ArrayList<String> res = new ArrayList<>(); for (String[/URL] saddr : getRangeFromLocal(0)) { InetAddress[/URL] addr = null; try { addr = InetAddress[/URL].getByName(saddr); if (addr.isReachable(TIMEOUT)) { res.add(addr.getHostAddress()); } else { System[/URL].out.println("Is Not reachiable: " + addr.getHostAddress()); } } catch (IOException[/URL] e) { e.printStackTrace(); } } return res; } @SafeVarargs private static <T> T[] concatAll(T[] first, T[]... rest) { //http://stackoverflow.com/questions/80476/how-can-i-concatenate-two-arrays-in-java int totalLength = first.length; for (T[] array : rest) { totalLength += array.length; } T[] result = Arrays[/URL].copyOf(first, totalLength); int offset = first.length; for (T[] array : rest) { System[/URL].arraycopy(array, 0, result, offset, array.length); offset += array.length; } return result; } private static List<NetworkInterface> getIfaces() throws SocketException[/URL] { return Collections[/URL].list(NetworkInterface.getNetworkInterfa ces()).stream().filter(notFake).collect( Collectors.toList()); } public static String[/URL][] getRangeFromLocal(int ifNum) { String[/URL][] res = {}; NetworkInterface liface; try { if (ifNum >= 0) { //liface = Collections.pinglist(NetworkInterface.ge tNetworkInterfaces()).get(ifNum); //liface=NetworkInterface.getByIndex(ifNum ); // by real num in interfaces pinglist liface = getIfaces().get(ifNum); //displayInterfaceInformation(liface); //res=new String[]{liface.getInterfaceAddresses().get(0).g etAddress().getHostAddress()}; //filter only IPV4 res = liface.getInterfaceAddresses().stream() .filter(ipv4) .filter(masq) .map(a -> new SubnetUtils(a.getAddress().getHostAddres s() + "/" + String[/URL].valueOf(a.getNetworkPrefixLength())).ge tInfo().getAllAddresses()) .reduce(new String[/URL][]{}, NetUtils::concatAll); /*for(InterfaceAddress addr:liface.getInterfaceAddresses()){ LOG.info(addr.getAddress().getHostAddres s() + "/" +addr.getNetworkPrefixLength()); res = concatAll(res,new SubnetUtils(addr.getAddress().getHostAdd ress() + "/" + String.valueOf(addr.getNetworkPrefixLeng th())).getInfo().getAllAddresses()); }*/ // res = new SubnetUtils(liface.getInterfaceAddresses ().get(0).getAddress().getHostAddress() + "/" + String.valueOf(liface.getInterfaceAddres ses().get(0).getNetworkPrefixLength())). getInfo().getAllAddresses(); } else { res = Collections[/URL].list(NetworkInterface.getNetworkInterfa ces()).stream() // networkInterface.getInterfaceAddresses() .stream() .filter(notFake) //for each interface (excluding localhost, virtual, P2P) //return String[] .map(iface -> { return iface.getInterfaceAddresses().stream() .filter(ipv4) .filter(masq) //for each ipv4 address on interface .map(a -> new SubnetUtils(a.getAddress().getHostAddres s() + "/" + String[/URL].valueOf(a.getNetworkPrefixLength())).ge tInfo().getAllAddresses()) .reduce(new String[/URL][]{}, NetUtils::concatAll); // return new SubnetUtils(iface.getInterfaceAddresses( ).get(0).getAddress().getHostAddress() + // "/" + String.valueOf(iface.getInterfaceAddress es().get(0).getNetworkPrefixLength())).g etInfo().getAllAddresses(); }) //return combined String[] (for all interfaces) .reduce(new String[/URL][]{}, NetUtils::concatAll); } } catch (SocketException[/URL] e) { e.printStackTrace(); } return res; } private static void displayInterfaceInformation(NetworkInter face netint) { //https://docs.oracle.com/javase/tutorial/networking/nifs/listing.html out.printf("Display name: %s\n", netint.getDisplayName()); out.printf("Name: %s\n", netint.getName()); out.printf("Index: %s\n", netint.getIndex()); Enumeration<InetAddress> inetAddresses = netint.getInetAddresses(); for (InetAddress[/URL] inetAddress : Collections[/URL].list(inetAddresses)) { out.printf("InetAddress: %s\n", inetAddress); } out.printf("\n"); } private static List<InterfaceAddress> getIfacesList() throws SocketException[/URL] { return Collections[/URL].list(NetworkInterface.getNetworkInterfa ces()).stream() // networkInterface.getInterfaceAddresses() .stream() .filter(notFake) //for each interface (excluding localhost, virtual, P2P) //return String[] .flatMap(iface -> iface.getInterfaceAddresses().stream() .filter(ipv4) .filter(masq)) .collect(Collectors.toList()) ; } public static void main(String[/URL] args[]) throws SocketException[/URL] { //createFtpUser("test","fortestonly"); //startFtp("1680"); //accessibleRange().forEach(addr->System.out.println(addr)); Enumeration<NetworkInterface> nets = null; try { nets = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface netint : Collections[/URL].list(nets)) if (!netint.isLoopback() & !netint.isPointToPoint() & (Collections[/URL].list(netint.getInetAddresses()).size() > 0) & !netint.isVirtual()) displayInterfaceInformation(netint); } catch (SocketException[/URL] e) { e.printStackTrace(); } if (args.length < 1) { System[/URL].err.println("Usage: java Ping ifaceNum"); return; } int firstArg = -1; if (Pattern.matches("[0-9]+", args[0])) { firstArg = Integer[/URL].parseInt(args[0]); } //firstArg=-1; out.printf("Param: %d\n", firstArg); out.println(Arrays[/URL].toString(getRangeFromLocal(firstArg))); //return 0; } } в main первая часть - это будет и в 5-ке работать (т.е. - под доминой) getRangeFromLocal не будет, но первой части вполне хватит
0
|
|
|
0 / 0 / 0
Регистрация: 21.01.2011
Сообщений: 120
|
|
| 03.03.2016, 12:11 | |
|
проще брать ip из документа сервера. Если такой путь не подходит, то сделать справочник соответствия названия сервера и ip-адреса. При этом не прийдется дополнительно нагружать сервера различными расчетами
0
|
|
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 03.03.2016, 12:12 | |
|
нужна либа org.apache.commons.net.util.SubnetUtils, свежаяя
0
|
|
|
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
|
||
| 03.03.2016, 12:16 | ||
|
win API ... а если сервер не виндовый?
Ну можно еще извратиться через CGI. На удаленном сервере создать серверный агент, который будет принтовать в консоль CGI переменные. В твоем случае наверное подойдет REMOTE_ADDR. Для серверного агента должно вернуть его IP. С "главного сервера" можно пнуть консольную команду на удаленный сервер, чтоб запустить агент. Результатом запуска консольной команды по идее будет строка прита из агента. Далее парсим. --- Добавлено 4 мар 2016. Первое сообщение размещено 4 мар 2016 ---
0
|
||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|
| 03.03.2016, 12:43 | |
|
совсем забыл..., если сервер привязан к IP (а лучше- чтобы оно так и было), то - команда nslookup <server name>
--- Добавлено 4 мар 2016. Первое сообщение размещено 4 мар 2016 --- остается не раскрытой тема самой необходимости знать серверный IP
0
|
|
|
1 / 1 / 1
Регистрация: 01.12.2009
Сообщений: 4
|
|||
| 03.03.2016, 12:43 | |||
Большинство серверов виндовые. Но есть и линукс. Тут конечно засада :(. Попробую поковырять CGI.
А IP мне нужно знать актуальное - т.к. у нас иногда (редко конечно - но уже пару раз натыкались) наши доблестные инфраструктурщики меняли IP-шники серваков.
0
|
|||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
|||
| 03.03.2016, 13:30 | |||
nslookup системная команда, ну вот и запускать её нужно в системе Shell LS это вполне сможет, получить резалт - можно в файл (и его распарсить) --- Добавлено 4 мар 2016. Первое сообщение размещено 4 мар 2016 ---
0
|
|||
|
1 / 1 / 1
Регистрация: 01.12.2009
Сообщений: 4
|
|||
| 03.03.2016, 13:40 | |||
Я только только начинаю кодить в LS. Всего естественно не знаю.
Поэтому смена IP приводит к "поломке" функционирования "системы". --- Добавлено 4 мар 2016 --- В общем - подытожу - спасибо за идеи и "направления" куда копать. Будем ковыряться. Всем спасибо.
0
|
|||
|
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
|
||
| 03.03.2016, 14:18 | ||
в современном мире - это одна из основных платформ, а в домино - основная (LS уже давно не развивается)
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
|
||
| 03.03.2016, 15:00 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 39
|
||||||
| 03.03.2016, 21:52 | ||||||
|
Если вы хотите из LotusScript получить данные по настроке IP с удаленного сервера, то вы можете это сделать с помощью wbem запросов обратившись к любому windows серверу (даже если там нету Lotus Domino). Ниже привожу возможный пример Но это только если на удаленной машине будет Windows Скрипт обращается к Windows серверу формирует запрос и получив результат перебирает список IP адресов полученных с удаленного сервера:
0
|
||||||
| 03.03.2016, 21:52 | |
|
Помогаю со студенческими работами здесь
20
Получение данных с сервера Получение ответа от сервера Получение ip-адреса для сервера Получение даты/времени с сервера Получение данных с сервера - зависание Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|
|
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub
Примеры вызова:
# Указанная валюта 'EUR'
floatrates-rub -Code 'EUR'
# Список имеющихся кодов валют
floatrates-rub -Available
function floatrates-rub {
|
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5
Примеры вызова
Get-WeatherRP5rss
с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
|
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr
Примеры вызова:
Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
|
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют
function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) {
$url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js'
$data = Invoke-RestMethod -Uri $url
$esc = 27
. . .
|
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений
Всем привет. А вот мой компьютер, переделанный из ноутбука.
Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
|