Здравствуйте. Пытаюсь сверлить зубы через тот самый проход. Не сверлится, нужна помощь.
Есть код php, который дергает bash скрипт на удаленном сервере. Пых:
$connection = ssh2_connect(xxx, 22); //коннектится
if (!ssh2_auth_password($connection, 'root', 'xxx')) {
die('Не прошла аутентификация');
}
ssh2_scp_send($connection, '/path/file.sql', '/path/file.sql'); //заливает туда заранее подготовленный sql файл
$stream = ssh2_exec($connection, '/path/runner.sh'); //дергает скрипт
(код упрощен, чтобы сюда портянку не тянуть)
Скрипт runner.sh. Он должен в свою очередь подрубиться по ssh к третьему серваку и выполнить там sql.
#!/bin/bash
ip='x.x.x.x'
user='root'
whoami
ssh -t $user@$ip ls # Для отладки. Эта команда отрабатывает нормально
ssh -t $user@$ip mysql < file.sql # А вот тут затык
echo "end" # это тоже выводится нормально
Когда я выполняю ./runner.sh просто из консоли на удаленном сервере, выплевыет в консоль ошибку
tput: No value for $TERM and no -T specified. Но sql в базу попадает. Когда дергаю его через php, не отрабатывает mysql < file.sql.
При этом ls выводит. Whoami в обоих случаях говорит, что юзер root. Права на fail.sql и runner.sh уже вообще поставила 777
Если вместо
ssh $user@$ip mysql < file.sql
ставлю
ssh $user@$ip 'mysql -e "select * from table"'
, то все работает опять же. То есть аутентификацию в mysql проходит, дело не в этом.
Я знаю, что казалось бы проще скопировать file.sql на третий сервак и скармливать мускулю оттуда. Но там свой геморрой, не копируется)
Подскажите пожалуйста, в чем может быть дело, куда смотреть? Дело вот в этой ошибке tput: No value for $TERM and no -T specified ?
Или как хотя бы можно это нормально отдебажить? Я не так чтобы близка с башем