ChatGPTなどの生成AIを使って、Linuxのスクリプトを作成する方法を紹介します。
生成AIが知らないことでも、プロンプトで入力と出力のパターンを教えれば、内容を把握して適切なスクリプトの出力を行ってくれます。
このプロンプトの与え方が身に付くと、生成AIを使って応用範囲がぐっと広がります。
やりたいこと
KVMの開発環境で自動で割り当てられたIPアドレスを取得したい。
これは、単なるお題です。
KVMについて興味がある方は、以下を参照ください。
入力プロンプト
生成AIへの入力プロンプトは以下です。
以下の手順ですべてのIPアドレスを取り出すLinuxスクリプトを作成してください(1)sudo virsh list –all でリストを取り出し
(2)sudo virsh domifaddr XXXX でIPアドレスの取り出し
$ sudo virsh list –all
Id Name State
——————————-
2 RHEL810-1 running
4 RHEL810-2 running
6 RHEL810-3 running
8 RHEL810-4 running
10 RHEL810-5 running
– CentOS7-1 shut off
– RHEL79-1 shut off
– RHEL94-1 shut off
– RHEL94-2 shut off
– RHEL94-3 shut off
– Ubuntu2204-1 shut off
– Ubuntu2404-1 shut off
– Ubuntu2404-2 shut off
– Ubuntu2404-3 shut off
$ sudo virsh domifaddr RHEL810-1
Name MAC address Protocol Address
——————————————————————————-
vnet1 52:54:00:fb:84:b8 ipv4 192.168.122.14/24
ポイントは、人がやるのと同じように入力と出力を与え、欲しい結果を指示すること。
このプロンプトの与え方が身に付くと、AIが知らないことを教えることで
その都度、AIが考えてくれるので応用範囲が広がります。
基本的な考え方は、人に頼む時と同じですね。
人に作業を頼み慣れている人は、生成AIに具体的な指示ができるので、最初に入力されるプロンプトの精度が高い傾向にあります。
生成AIで生成された結果
Geminiは不正解なので、CopilotとChatGPTの結果を記載。
経験上、生成AIはスクリプト系の生成は強いです。
Copilot
#!/bin/bash
# Get the list of all VMs
vm_list=$(sudo virsh list --all | awk 'NR>2 {print $2}')
# Loop through each VM and get its IP address
for vm in $vm_list; do
if [ "$vm" != "-" ]; then
echo "VM: $vm"
sudo virsh domifaddr $vm | awk 'NR>2 {print $4}'
fi
done
ChatGPT
#!/bin/bash
# 仮想マシンのリストを取得
vms=$(sudo virsh list --all | awk 'NR>2 {print $2}')
# 各仮想マシンのIPアドレスを取得
for vm in $vms; do
echo "VM: $vm"
# 仮想マシンが"running"状態か確認し、IPアドレスを取得
state=$(sudo virsh list --all | grep $vm | awk '{print $3}')
if [ "$state" == "running" ]; then
sudo virsh domifaddr $vm | grep ipv4 | awk '{print "IP Address: "$4}'
else
echo "State: $state (no IP)"
fi
echo ""
done
最後に
生成AIをいろいろ試して、プロンプト力を鍛えていきましょう。
Copilot, Gemini, ChatGPTなどの生成AIの違いにより生成結果が変わるのでいろいろ試しましょう。
だんだん、どこまで指示すれば正しい結果を返してくれるかが身についてきます。