2023年11月26日星期日

python的openai库,1.3.5版本的使用方法

 from openai import OpenAI

api_key="XXXXXX"

base_url = "http://127.0.0.1:8888/to/v1"


client = OpenAI(

  api_key=api_key,

  base_url = base_url

)


# def get_completion(prompt, model="gpt-3.5-turbo"):

    # messages = [{"role": "user", "content": prompt}]

    # response = client.chat.completions.create(

        # model=model,

        # messages=messages,

        # temperature=0.7,

    # )

    # return response.choices[0].message.content


# prompt = "你好,ChatGPT!"

# print(get_completion(prompt))


while True:

    text = input("请输入问题:")

    response = client.chat.completions.create(

        model="gpt-3.5-turbo",

        messages=[

            {'role': 'user', 'content': text},

        ],

        stream=True

    )


    for chunk in response:  

        pretext=chunk.choices[0].delta.content

        if pretext is not None:    

            print(chunk.choices[0].delta.content, end="", flush=True)

    print("\n")

2023年11月21日星期二

如何将内网主机端口映射到公网

要将主机B的22端口映射到主机A的公网地址的123456端口,你可以使用端口转发(port forwarding)来实现。这通常通过使用iptables来完成。以下是在主机A上的一些命令,假设主机A使用的是Linux操作系统。

请注意,执行这些命令可能需要具有root权限的用户。

启用IP转发:

在主机A上,确保IP转发被启用。打开 /etc/sysctl.conf 文件并确保以下行被取消注释:

net.ipv4.ip_forward=1

然后运行以下命令以应用更改:

sudo sysctl -p

添加端口转发规则:

使用iptables设置端口转发规则。在这里,我们将主机B的22端口转发到主机A的123456端口:

sudo iptables -t nat -A PREROUTING -p tcp --dport 123456 -j DNAT --to-destination 10.9.0.2:22

sudo iptables -t nat -A POSTROUTING -p tcp --dport 22 -d 10.9.0.2 -j SNAT --to-source 10.9.0.1

上述命令中:

第一行将外部流量(目标端口123456)转发到内部主机B的22端口。

第二行确保响应的流量正确返回到源主机A。

允许流量通过防火墙:

如果主机A上启用了防火墙,确保允许相应的流量通过。例如,如果使用的是ufw:

sudo ufw allow 123456

如果使用其他防火墙工具,请相应调整命令。

保存规则:

如果一切都正常,保存iptables规则以确保它们在重启后保持不变:

sudo service iptables save

或者,如果使用的是ufw:

sudo ufw reload

现在,通过使用主机A的公网地址XXX.XXX.XXX.XXX和123456端口,你应该能够访问主机B的22端口。请注意,这只是一个简单的例子,实际情况可能需要根据具体网络环境和安全要求进行调整。






 

2023年11月19日星期日

ubuntu22作为openvpn客户端,设置防火墙给其他主机使用,并链接上外网

1.在openvpn已经链接上的情况下。

设置openvpn的主机的sysctl.conf文件,使得ip可以转发。设置如下:

net.ipv4.ip_forward = 1

net.ipv6.conf.all.forwarding = 1

net.ipv6.conf.default.forwarding = 1

然后sysctl -p生效

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

就是接收从10.8.0.0子网来的信息。否则在客户端(ubuntu22)无法ping通外网。

保持设置,并永久生效:

iptables-save > /etc/iptables/rules.v4

2、在ubuntu22本地

sysctl.conf文件:

net.ipv4.ip_forward = 1

net.ipv6.conf.all.forwarding=1

net.ipv6.conf.default.forwarding=1

然后sysctl -p生效

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE

如果有另外一个网络,例如10.8.0.0/24,那么需要增加一条命令:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o tun0 -j MASQUERADE

接收来自192.168.1.0子网的流量。

保持设置,并永久生效:

iptables-save > /etc/iptables/rules.v4


这时候,设置192.168.1.0中的子网主机,只要将网关设置为ubuntu22的地址如192.168.1.2,则可以ping通外网了。


最后抓包:

tcpdump -i ens160 dst host 142.251.130.4


对于ipv6 需要设置,在服务器上需要:
sudo ip6tables -t nat -A POSTROUTING -s fd00:0:0:1::/64 -o eth0 -j MASQUERADE

这条 ip6tables 命令的作用是 对从 OpenVPN 客户端(tun0)流出的 IPv6 流量进行 NAT(地址伪装),使其看起来像是来自服务器的 eth0 网卡。

下面这两行好像是不需要的:

sudo ip6tables -A FORWARD -i tun0 -j ACCEPT

sudo ip6tables -A FORWARD -o tun0 -j ACCEPT

保存:

ip6tables-save > /etc/iptables/rules.v6

在client上,需要在client.conf上增加:
route-ipv6 2000::/3




ubuntu22如何让iptables的设置永久生效

sudo apt-get update

sudo apt-get install iptables-persistent

sudo service netfilter-persistent start

然后

iptables-save > /etc/iptables/rules.v4

ip6tables-save > /etc/iptables/rules.v6

就可以保持v4和v6的设置,重启也会生效。

2023年11月18日星期六

openvpn建立链接后,客户端可以ping通服务器的IP却ping不通外网IP的原因和解决办法。

因为服务器没有做转发的设置。需要在服务器中的/etc/sysctl.conf文件中加入下面语句:

net.ipv4.ip_forward = 1

net.ipv6.conf.all.forwarding = 1

net.ipv6.conf.default.forwarding = 1

net.ipv4.tcp_fastopen = 3

net.ipv4.conf.all.proxy_arp = 1

net.ipv6.conf.all.proxy_ndp = 1

net.ipv6.conf.default.proxy_ndp = 1

net.ipv6.conf.eth0.proxy_ndp = 1

net.ipv6.conf.tun0.proxy_ndp = 1

net.core.rmem_max = 2500000 

然输入命令 sysctl -p 实现配置生效。

接着需要输入下面这条防火墙的配置

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

ip6tables -t nat -A POSTROUTING -s fd00:0:0:1::/64 -o eth0 -j MASQUERADE


需要在openvpn服务器的配置文件中加入:

push "redirect-gateway def1 bypass-dhcp"

push "redirect-gateway-ipv6 def1 bypass-dhcp"

server-ipv6 fd00:0:0:1::/64

server 10.8.0.0 255.255.255.0

push "dhcp-option DNS 2606:4700::1111"

push "dhcp-option DNS 2001:4860:4860::8888"





安装 PaddleOCR的方法

  安装飞桨版本:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/windows-pip.html 命令:  python -m pip...