github - 用phpseclib从github拉远

标签 github ssh phpseclib

我正在尝试从远程git repo自动更新网站。因为它在共享主机上,所以我在github和phpseclib 1.0上使用了一个webhook。这是我的代码:

$ssh = new Net_SSH2(SITE_DOMAIN);
$key = new Crypt_RSA();
$key->loadKey(file_get_contents('/home/'.SSH_USERNAME.'/.ssh/'.KEYPAIR_NAME));
if (!$ssh->login(SSH_USERNAME, $key)) {
 throw new Exception('Failed to login');
 exit('Login Failed');
}
echo $ssh->write("cd ~/source\n");
echo $ssh->write("git pull origin master\n");

git命令将无法运行。但是当我从终端手动执行git pull时
谢谢你的帮助

最佳答案

从您的代码:

echo $ssh->write("cd ~/source\n");
echo $ssh->write("git pull origin master\n");

通常,使用交互式 shell 程序时,您需要等待提示,然后再发送下一个命令。尝试这样的事情:
$ssh->read('#[prompt]#');
echo $ssh->write("cd ~/source\n");
$ssh->read('#[prompt]#');
echo $ssh->write("git pull origin master\n");

有时识别提示是很容易的-有时则不太容易。就像提示中带有彩色文本一样,这意味着提示与您想像的不一样。

关于github - 用phpseclib从github拉远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49347110/

相关文章:

github - 在github中使用Jekyll制作的Blog中未显示图像

SVN+SSH,不用每次都做ssh-add吗? (苹果系统)

java - PHP 中的 MD5 与 RSA

php - 使用带有 net_ssh 的 phpseclib 如何使用 $ssh->exec su 到 root

Git 客户端抛出错误

Git - 清理旧分支

github - 在 Github 上获取编译二进制文件的链接

linux - 用于本地(非远程)命令执行的 ssh 隧道

macos - 没有密码的本地 Hadoop 安装有多安全?

php - 为什么 phpseclib 生成不兼容的证书?