今晚实验室的同学有一个需求,需要拷一下虚拟机A 中的文件: /usr/lib/i386-linux-gnu/libc.a
本来以为分分钟可以搞定的,结果折腾了一个多小时。在此记录一下吧。
这个虚拟机是别人提供的,给了个vmdx磁盘文件,创建了之后发现是read-only system,不知道是怎么做到的。因此创建文件什么的是不可能了。修改配置文件、安装软件也不行了。
虚拟机开了22端口,那么通过ssh传输文件吧。然而ssh登陆不上该虚拟机,why?因为想让root用户登陆得修改配置文件...
万幸的是,该虚拟机是联网的。那么curl传一下吧。
curl -F "file=@/usr/lib/i386-linux-gnu/libc.a" server_ip
接受脚本:
<?php $inipath = php_ini_loaded_file(); if ($inipath) { echo 'Loaded php.ini: ' . $inipath; } else { echo 'A php.ini file is not loaded'; } if (isset($_FILES["file"]["name"])) { echo "success\n"; $name = $_FILES["file"]["name"]; $tmp_name = $_FILES['file']['tmp_name']; $error = $_FILES['file']['error']; echo "name is \n"; echo $name; echo "\necho done"; echo "\nname is \n"; echo $tmp_name; echo "\necho done"; if (!empty($name)) { $location = 'D:/.../WWW/'; if (move_uploaded_file($tmp_name, $location.$name)){ echo 'Uploaded'; } } else { echo 'please choose a file'; } }else{ echo "error"; } ?>
起初并没有接收到到文件,但是wireshark抓包发现文件确实已经传输了。定位到php脚本发现$tmp_name为空,原因在于这个文件太大了,3.6M,php默认配置最大上传大小是2M,因此修改php.ini解决:
; Maximum allowed size for uploaded files. upload_max_filesize = 8M ; Must be greater than or equal to upload_max_filesize post_max_size = 8M
php脚本是网上搜的,好久不搞web了,真是太菜了。