php问题:PHP能不能连接ssh并进行文件的读写 *** 作?

php问题:PHP能不能连接ssh并进行文件的读写 *** 作?,第1张

可以的,首先你必须安装了ssh的猜蠢php扩展。

如果不知道是否已经安装好,可穗漏陪以输入一下代码测试一下。

<?php

phpinfo()

?>

如果有以上信息,说明安装成功,以下是测试代码

<?php

$connection = ssh2_connect('192.168.1.222', 22)

if (!$connection) 搜指die('Connection failed')

ssh2_auth_password($connection, 'root', 'root')

$sftp = ssh2_sftp($connection)

$stream = fopen("ssh2.sftp://$sftp/var/www/php_ssh_test.txt", 'w+')

fwrite($stream, "php_ssh_test\nsecond line\n")

fclose($stream)

exit

主要代码:

pom.xml

<dependency>

<groupId>org.apache.kafka</groupId>腊悄

<artifactId>kafka-clients</artifactId>

<version>0.10.2.0</version>

</dependency>

<dependency>

<groupId>org.apache.kafka</groupId>

<artifactId>kafka_2.11</artifactId>

<version>0.10.2.0</version>

</dependency>

<!--ssh2 -->

<dependency>

<groupId>ch.ethz.ganymed</groupId>

<artifactId>ganymed-ssh2</artifactId>

<version>build210</version>

</dependency>

主类:

/**

* Project Name:kafkademo

* File Name:TailLogToKafka.java

* Package Name:cmm.kafkademo

* Date:2018年12月7日下基局蚂午2:40:46

* Copyright (c) 2018, c2206190880@163.com All Rights Reserved.

*

*/

package cmm.TailLogToKafka

import java.io.BufferedInputStream

import java.io.BufferedReader

import java.io.File

import java.io.FileInputStream

import java.io.IOException

import java.io.InputStream

import java.io.InputStreamReader

import java.util.Properties

import ch.ethz.ssh2.Connection

import ch.ethz.ssh2.Session

import ch.ethz.ssh2.StreamGobbler

import cmm.util.PathUtil

/**

* ClassName:TailLogToKafka <br/>

* Function: TODO ADD FUNCTION. <br/>

* Reason: TODO ADD REASON. <br/>

* Date: 2018年12月7日 下午2:40:46 <br/>

* @author mmchen

* @version

* @sinceJDK 1.7

* @see

*/

public class TailLogToKafka {

private static Connection conn

private static int threadNum=0

private static String cmd = "echo no commond"

private static String topic = "cmmtest"

public static void main(String[] args) {

Properties properties = new Properties()

try {

InputStream in = new BufferedInputStream(new FileInputStream(new File(PathUtil.getProjectParentPath()+"/remote.properties")))

properties.load(in)

} catch (IOException e1) {

System.out.println("远程连接配置读取失败!!!")

e1.printStackTrace()

}

//远程连接linux服务搏埋器

String ip = properties.getProperty("ip")

String usr = properties.getProperty("user")

String psword = properties.getProperty("password")

cmd = properties.getProperty("shell")

topic = properties.getProperty("topic")

//创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法

//new Connection(ip, port)创建对象

conn = new Connection(ip)

try {

//连接远程服务器

conn.connect()

//使用用户名和密码登录

conn.authenticateWithPassword(usr, psword)

} catch (IOException e) {

System.err.printf("用户%s密码%s登录服务器%s失败!", usr, psword, ip)

e.printStackTrace()

}

//创建线程,执行shell命令,获取实时数据流,写入kafka

threadNum=1

new Thread(new Runnable() {

@Override

public void run() {

try {

Session session = conn.openSession()

session.execCommand(cmd)

InputStream out = new StreamGobbler(session.getStdout())

BufferedReader outBufferedReader = new BufferedReader(new InputStreamReader(out))

myProducer producerDemo = new myProducer()

while (true) {

String line = outBufferedReader.readLine()

if (line == null) {

threadNum=0

outBufferedReader.close()

session.close()

conn.close()

break

}

System.out.println(line)

//数据写入kafka

producerDemo.produce(topic,line)

}

} catch (IOException e) {

System.out.println("open session fail")

e.printStackTrace()

}

}

}).start()

while (threadNum>0) {

Thread.yield()

}

}

}

打开终端 通常使用scp传输

命令为:

scp 192.168.1.1:/root

192.168.1.1为服务器的IP地址

/root为在服务器上的目录

命令输入后系统会问你困念登陆服务器所用的用户顷行名和密码

请参考雀尺哗


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/8218594.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存