Вы можете:
sudo -H -u name bash -c '[ -f "$HOME"/file ] || echo "file not found"'
[-f "$ HOME" / файл] || echo «файл не найден»
делает именно то, что вы пытаетесь сделать с if..then
.
От man sudo
:
-H, --set-home
Запросить, чтобы политика безопасности установила для переменной среды HOME домашний каталог, указанный целевым запись в базе паролей пользователя. В зависимости от политики это может быть поведение по умолчанию.
Сборка SNX 800007075 от 2012 г., используемая для поддержки CheckPoint VPN из командной строки Linux. Итак, я протестировал его, и о чудо, он все еще работает с последними дистрибутивами и ядром (s )4.x/5.x.
Итак, в конечном счете, мой другой ответ в этой теме остается верным,если вы не можете получить сборку SNX 800007075 или если эта конкретная версия SNX перестанет работать с текущими версиями Linux (это может произойти в ближайшем будущем)или если вам нужен одноразовый пароль служба поддержки.
В настоящее время решение заключается в установке этой конкретной последней версии SNX, которая по-прежнему поддерживает выполнение VPN из командной строки.
snx
сборку 800007075, загрузите ее из:wget https://starkers.keybase.pub/snx_install_linux30.sh?dl=1 -O snx_install.sh
Для Debian и Debian -на основе 64 -битных систем, таких как Ubuntu и Linux Mint, может потребоваться добавить 32 -битную архитектуру:
sudo dpkg --add-architecture i386
sudo apt-get update
Мне пришлось установить следующие 32 -битные пакеты:
sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
Затем запустите snx
сценарий установки:
chmod a+rx snx_install.sh
sudo./snx_install.sh`
Теперь у вас будет /usr/bin/snx
32 -битный исполняемый клиентский двоичный файл. Проверьте, отсутствуют ли какие-либо динамические библиотеки с помощью:
sudo ldd /usr/bin/snx
Вы можете перейти к следующим пунктам только тогда, когда все зависимости будут удовлетворены.
Возможно, вам придется сначала запустить snx -s CheckpointURLFQDN -u USER
вручную, прежде чем создавать сценарии для любого автоматического использования, чтобы сигнатура VPN была сохранена в /etc/snx/USER.db
.
Прежде чем использовать его, вы создаете ~/.snxrc file, using your regular user (not root)
со следующим содержимым:
server IP_address_of_your_VPN
username YOUR_USER
reauth yes
Для подключения введитеsnx
$ snx Linux SNX от Check Point сборка 800007075 Пожалуйста, введите ваш пароль:
SNX -подключен.
IP-адрес офисного режима :10.x.x.x DNS-сервер :10.x.x.x Дополнительный DNS-сервер :10.x.x.x DNS-суффикс :xxx.xx, xxx.xx Время ожидания :24 часа
Если вы понимаете риски безопасности, связанные с жестким кодированием пароля VPN в скрипте, вы также можете использовать его как:
echo 'Password' | snx
Для закрытия/отключения VPN, пока можно остановить/убить snx
,лучший и официальный способ - дать команду:
$snx -д SNX -Отключение... Выполнено.
см. также Проблемы с конфигурацией инструмента Linux Checkpoint SNX для уточнения того, какую snx
версию использовать.
Для автоматизации входа в систему и принятия новой подписи (и понимания последствий для безопасности )я написал expect
сценарий, который я назвал сценарием snx_login.exp
; не очень безопасно, однако вы можете автоматизировать свой вход в систему, вызвав его с паролем в качестве аргумента:
#!/usr/bin/ожидание порождение /usr/bin/snx
установить пароль [lindex $argv 0]
ожидать " ?пароль:" отправить --"$пароль\r"
ожидать { "о :" { отправить "г\г" exp _продолжить } конец }
ПС. Остерегайтесь, что snx
не поддерживает только OTP, вам придется использовать скрипт snxconnect
, представленный в другом ответе, если вы используете его.
PPS @gibies обратил мое внимание на то, что при использовании etoken поле пароля получает пароль плюс добавленный etoken, а не фиксированный пароль.
Работая над установкой официального интерфейса Firefox SSL VPN Extender в вопросе VPN SSL Network Extender в Firefox , я обнаружил и решил еще несколько кусочков головоломки этого вопроса.
По-видимому, несмотря на то, что использование командной строки snx
из контрольной точки было прекращено, веб-клиент, как описано в связанном посте, все еще работает. Однако существует клиент командной строки Python, который пытается воспроизвести интерфейс Web+Java поверх клиента snx
, и этот пост посвящен его настройке для работы.
Во-первых, snxvp
, установленный из python pip
, не работает. Наhttps://github.com/agnis-mateuss/snxvpnесть обновленная исправленная версия, в которой есть несколько полезных исправлений, в том числе опция для игнорирования неподписанных и/или просроченных сертификатов и, что более интересно, совместимость с python2 и python3.
Кроме того, все URL-адреса на snxconnect.py
должны быть изменены с sslvpn/
на ``.
Таким образом, шаг -по -пошаговым инструкциям примерно соответствует:
snx
установки:Если в VPN, чтобы получить установочный файл, выполните:
wget --no-check-certificate https://VPN_FW_HOSTNAME/SNX/INSTALL/snx_install.sh
В противном случае вам придется получить его из веб-интерфейса, как описано в связанном ответе.
Для Debian вам может понадобиться:
sudo dpkg --add-architecture i386
sudo apt-get update
Мне пришлось установить следующее:
sudo apt-get install libstdc++5:i386 libx11-6:i386 libpam0g:i386
Тогда беги:
chmod a+rx snx_install.sh
sudo./snx_install.sh`
Теперь у вас будет /usr/bin/snx
32 -битный исполняемый клиентский двоичный файл. Проверьте, отсутствуют ли какие-либо динамические библиотеки с помощью:
sudo ldd /usr/bin/snx
Вы можете перейти к следующим пунктам только тогда, когда все зависимости будут удовлетворены.
Не уверен, нужно ли сначала запускать snx -s CheckpointURLFQDN -u USER
перед использованием snxconnect
, чтобы подпись VPN сохранялась в /etc/snx/USER.db
.
snxconnect
python. Такая программа пытается эмулировать веб-интерфейс, и, что более интересно, для аутентификации ей не требуется Java.Итак, чтобы установить и настроить snxconnect
, запустите от имени пользователя root:
apt-get -y install git make libxml2-dev libxslt1-dev zlib1g-dev
apt-get -y install python-pip
pip install pytz
git clone https://github.com/agnis-mateuss/snxvpn
git clone git://git.code.sf.net/p/sfreleasetools/code releasetools
cd snxvpn
Now, as for taking out the /sslvpn URL, some Checkpoint appliances need it, some do not. I am not still aware of why the difference. I need it, @WileyMarques does not.
sed -i "s/sslvpn\///g" snxconnect.py
. затем сделайте это как root, для python3:(рекомендуется)
apt-get install python3-pip python3-docutils python3-pip python3-libxml2 python3-dev python3-crypto python3-bs4
make
python3 setup.py install --prefix=/usr/local
. или вместо , сделайте как root, для python2:
apt-get install python-docutils python-libxml2 python-lxml python-dev python-bs4 python-beautifulsoup
sed -i "s/distutils.core/setuptools/g" setup.py
make
python setup.py install --prefix=/usr/local
После установки вы можете работать как непривилегированный -пользователь:
/usr/local/bin/snxconnect -H CheckpointURLFQDN -U ПОЛЬЗОВАТЕЛЬ --пропустить -сертификат --сохранить -файлы cookie
Если все прошло нормально, он запросит пароль, а затем отобразит:
SNX connected, to leave VPN open, leave this running!
Если у вас возникли проблемы с получением этого сообщения, и вместо этого вы получаете несколько раз подряд сообщение :«Неожиданный ответ, попробуйте еще раз», выполните метод Firefox, отключитесь и выйдите из системы, подождав пару раз. минут перед повторной попыткой ввести команду snxconnect
.
После установки VPN вы можете проверить с помощью ip address
или ifconfig
теперь у вас есть интерфейс tunsnx
:
$ ip addr show dev tunsnx
14: tunsnx: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.x.x.x peer 10.x.x.x/32 scope global tunsnx
valid_lft forever preferred_lft forever
inet6 fe80::acfe:8fce:99a4:44b7/64 scope link stable-privacy
valid_lft forever preferred_lft forever
ip route
также покажет вам новые маршруты, проходящие через интерфейс tunsnx
.
Для закрытия/отключения VPN, хотя вы можете остановить/убить snxconnect
, лучшим и официальным способом является ввод команды:
$snx -д
SNX -Отключение... Выполнено.
Кроме того, я также узнал:
snxconnect
кажется, что при отключении предыдущего VPN-подключения и выходе из официального веб-интерфейса ведет себя лучше если есть какая-то странная проблема(нужно попробовать выполнить snx -d
, чтобы увидеть, даст ли это тот же результат )] ; snx
владел им, поскольку snxconnect
ведет переговоры с snx
, используя его; snxconnect
/ snx
, обрабатывается как виртуальный хост, и поэтому вы не можете напрямую использовать IP-адрес VPN; snx_install.sh
скрипта; python2
в обмен -на меньшее пространство, однако, поскольку python2 постепенно прекращается, snxconnect
в ближайшем будущем может не поддерживать его; /sslvpn
, так как мои URL-адреса не начинаются с /sslvpn
. Я бы проверил ваш конкретный случай. Я абсолютно не знаю, связано ли присутствие этой строки в коде со старой версией, хотелось бы услышать отзыв; snxconnect
имя хоста CheckPoint должно быть точным именем, которое веб-интерфейс показывает вам после аутентификации, поскольку это виртуальный веб-хост. В противном случае вам не удастся установить VPN; snx
файл с подписью сервера VPN/Checkpoint будет создан по адресу /etc/snx/USER.db
; snxconnect
, так как snx
сам по себе не поддерживает его.